Azure Pipelines has been a leader in CI\CD for a while and is rich in capabilities. Microsoft is focusing their efforts on GitHub actions which is an evolution of the Azures Pipelines architecture.
This site is to help you,
- understand what the differences are
- choose which platform your should pick
- migrate to GitHub Actions as that is the future
The official documentation can be found here Migrating from Azure Pipelines to GitHub Actions
Lets start with a simple feature to feature comparison
馃敆 | Azure Pipelines | Notes | Github Actions | Notes | Link to roadmap |
---|---|---|---|---|---|
馃敆 | Variables | Setting environment variables for scripts | Environment Variables | Variables are defined in the script | |
馃敆 | Variables | Variables in expressions | Environment Variables | Use |
|
- | Set variable during execution | Workflow commands | use ::set-env | ||
- | Set Variables at trigger time | Worflow_Dispatch | Workflow dispatch allows for inputs that allows you to take values when w workflow is triggered | ||
- | System Variables | Default Environment Variables | Totally different naming for variables. | ||
- | Secret variables | Encrypted secrets | |||
- | Agents | Runners | Its the same agent being used by both Azure Devops and Git Hub Actions | ||
- | Scaling build agents | roadmap | Actions: Multiple hosted runner sizes, custom networking, and custom images 路 Issue #95 | ||
- | Deployment Groups | Runners with labels | Target based on matching ALL labels Using self-hosted runners in a workflow - GitHub Docs | ||
- | Environments | Environments beta | Can only be used for public repos Does allow assigning resources to the environment |
||
- | Expressions | Context and Expressions | Looks slightly nicer than azure devops, access to richer context objects | ||
- | Condition | Executing a task based on a condition, is a first class attribute of a step, job or stage | Conditional Expression | Use the if along with expression |
|
- | Stages | Multiple jobs chained together | Workflows chained | Environments with checks will also provide a stage approach but at the job level | |
- | Stage Approval | As with azure | Reviewing Deployments - beta | Actions: Manual approvals in workflows 路 Issue #99 | |
- | Release Gates | Azure pipelines yml doesn't support gates either, only the classic release | Custom Action | Actions can be used for some gates, polling/retry/timeout thats something to build into the action and thus will be using a runner for that time | |
- | Logging Commands | Workflow commands | Very similar | ||
- | Fine grained repo controls | roadmap | Role-based Access Control (RBAC) - Custom Roles with fine-grained repo permissions 路 Issue #111 | ||
- | Auto merge PRs | Be able to auto merge a PR once checks have passed | roadmap | ||
- | Pipeline templates | Composite run steps action | Using actions in the same repository | ||
- | Pipeline templates | Sharing Workflows |
Actions: Centrally managed workflow templates 路 Issue #98 |
||
- | Template control | Be able to inject template and enforce policy roadmap | Actions: Organization and enterprise workflows 路 Issue #52 | ||
- | TaskGroup | Custom Action | ??? | ||
- | VariableGroup | Variables have to be defined as secrets or in the yml | |||
- | Test results | Azure devops has rich testing analytics | none |