Selecting a deployment automation solution
Select a deployment automation solution
GitHub Actions and Azure Pipelines both build and deploy. The exam asks which one fits a stated situation, so learn the discriminators rather than a feature list.
Conditional fit signals
| Requirement or context | What it establishes |
|---|---|
| Source is in GitHub | Either product can build it; this does not choose the engine |
| Keep an existing Azure DevOps operating model | Azure Pipelines may reduce integration and migration work; Azure Boards also connects to GitHub |
| Protected Azure DevOps resource must enforce Required template | Azure Pipelines checks are administered with the resource and constrain pipelines that consume it |
| Environment approval | Both products support environment protection: Azure checks and GitHub required reviewers are product-specific implementations |
| Reuse | Azure Pipelines YAML templates; GitHub reusable workflows and composite actions |
| Extension ecosystem | Azure DevOps extensions and tasks; GitHub Marketplace actions |
| Reach an on-premises target | Both can use self-hosted compute with connectivity to the target |
| Self-managed automation control plane | Azure DevOps Server or GitHub Enterprise Server Actions, according to the stated estate and constraints |
Governance is product-specific
Azure Pipelines approvals and checks are outside pipeline YAML and administered with the protected resource. A Required template check can require pipelines that consume a particular resource or environment to extend a specified YAML template. The constraint is resource-scoped, and users with resource administrator permission can administer or bypass its checks.
GitHub Actions environments can also require reviewers. Treat the controls as different product contracts, not as an unsupported universal ranking.
Existing estate. A shop already running Azure Boards, Artifacts and Repos may prefer to keep automation in the same operating model. That is a fit inference, not lock-in: Azure Boards connects to GitHub, and Azure Pipelines builds GitHub repositories natively.
Topology and billing are separate decisions
An on-premises target does not require an on-premises control plane: Azure Pipelines agents and GitHub Actions runners can both be self-hosted near the target. If the automation control plane itself must be self-managed, Azure DevOps Server and GitHub Enterprise Server Actions are both candidates. GHES Actions is designed for environments without full internet access.
Do not reduce cost to one binary comparison:
- Azure Pipelines Microsoft-hosted capacity uses parallel-job concurrency.
- Azure Pipelines GitHub-hosted agents use per-minute pay-as-you-go billing.
- GitHub Actions private repositories receive included GitHub-hosted minutes, then bill additional usage; standard hosted public-repository and self-hosted usage differ.
Exam pattern: GitHub source plus generic approvals or an on-premises target is not enough to choose Azure Pipelines. Add an Azure-specific requirement — for example, retaining an Azure DevOps operating model and enforcing Required template on a protected Azure DevOps resource.
Primary sources
- https://learn.microsoft.com/en-us/credentials/certifications/resources/study-guides/az-400
- https://learn.microsoft.com/en-us/azure/devops/pipelines/repos/github
- https://learn.microsoft.com/en-us/azure/devops/pipelines/process/approvals
- https://learn.microsoft.com/en-us/azure/devops/pipelines/process/resources
- https://learn.microsoft.com/en-us/azure/devops/pipelines/agents/agents
- https://learn.microsoft.com/en-us/azure/devops/server/
- https://docs.github.com/en/actions/reference/workflows-and-actions/deployments-and-environments
- https://docs.github.com/en/actions/concepts/runners/self-hosted-runners
- https://docs.github.com/en/enterprise-server@3.21/admin/managing-github-actions-for-your-enterprise/managing-access-to-actions-from-githubcom/about-using-actions-in-your-enterprise
- https://docs.github.com/en/actions/concepts/workflows-and-actions/reusing-workflow-configurations
- https://learn.microsoft.com/en-us/azure/devops/pipelines/process/templates
- https://learn.microsoft.com/en-us/azure/devops/pipelines/licensing/concurrent-jobs
- https://docs.github.com/en/billing/concepts/product-billing/github-actions
- https://learn.microsoft.com/en-us/azure/devops/boards/github/connect-to-github
- https://learn.microsoft.com/en-us/azure/devops/extend/overview
- https://docs.github.com/en/actions/how-tos/create-and-publish-actions/publish-in-github-marketplace