Now that the Continuous Delivery pipeline has been set up, the product owner notices that changes, that she wants to announce all at once, are ending up straight into production. Even worse, some customers complain about these new features and unknown behavior. One of the developers mentions to start using feature flags to hide certain functionality. That is a great idea, but for now this is too much work and too complicated to set up. The team decides wants to set up a manual approval workflow to allow the product owner to approve changes before they end up in production.
After some research they find that GitHub Actions is very good at automation and is more then sufficient for the developer workflow. But a more enterprise requirement, like adding approvals, is very hard with GitHub. You and your team advise to look at Azure DevOps again. Since all work is already registered there, it makes sense to build the build and release pipeline within Azure DevOps, and implement the manual approval. Furthermore, the integration between GitHub and Azure DevOps is great with the Azure Pipelines extension
In this challenge you are going to setup a CI/CD pipeline in Azure DevOps that gets the sources from GitHub. The pipeline will have 1 deployment stage that deploys to the production environment. This has an manual approval gate.
- GitHub Actions are disabled
- Azure DevOps YAML Pipeline created with a build stage, that uses docker compose to build and publish images to the GitHub Container Registry
- Azure DevOps pipeline build sources from the GitHub repository
- DeployProd stage added that deploys the infrastructure with the
deploy-infrastructure.ps1
file - WebApp deployed from the pipeline using the docker-compose file
- Secret added for GitHub Container Registry
- Environment production added to the pipeline with a manual approval
- Disabling GitHub Action Triggers.
- Install the Azure Pipelines App into your GitHub account
- Create a Docker Registry service connection.
- Create Azure DevOps Pipelines stages
- Checkout sources in a pipeline,
- Use the Docker compose task for build,
- Use the Docker compose task for publish
- Use an Azure CLI step to update the web app service
- Variables in Azure DevOps.
- Dependencies between pipeline stages using the
dependsOn
. - Manual Approval to deploy.
If you are stuck or you want to progress to the next challenge, there is a solution prepared for you. When you run the following command from the PowerShell Terminal, a Pull Request with the files and instructions will be created for you.
Workshop-Step Solution "CLOSELOOP-T003"
To read or view a step by step explanation of this challenge, please visit this page
When you are done, move to the next challenge