In this episode we talk about Azure Pipelines.
Definitions
What is a pipeline
Chain of repeatable actions/tasks that transform some input into some output. Its like a function chain.
Types of pipelines
Build Pipeline
This pipeline takes the source code as input and produces deployable artifacts as the output.
It may also do some unit testing, linting and static analysis to the code to check the validatiy of the output artifacts.
Release Pipleline
This pipeline takes the deployable artifacts as input and produces deployed environments as outputs.
It may also perform some automated integration tests to test the validity of the deployment
Continuous Integration (CI)
This is the practice of merging the small batches of developer changes into the main branch continuously instead of all at once at the end of a development cycle.
This is facilitated by a good build pipeline.
For good or worse CI Pipeline and Build Pipeline are often conflated
Continuous Delivery (CD)
This is the practice of automatically deploying an artifact to an environment as soon as the artifact is created.
This does not mean that the environment production.
This is facilitated by a good release pipeline
For good or worse CD Pipeline and Release Pipeline are often conflated
CI/CD
This is when we combine the practice of Continuous Integration with the practice of Continuous Delivery
Continuous Deployment
This is the practice of extending the automatic deployment of an artifact through all stages until is automatically deployed to production.
This requires one or more good release pipelines
It often gets confused with Continious Delivery. It is Continuous Delivery but Continuous Delivery is not Continuous Deployment.
Azure DevOps Products
Azure DevOps
A suite of development tools
Azure Pipelines
Tool for building out the build and release pipelines
Alternates Jenkins, Octopus, TeamCity, Circleci, GitLab
Excellent GitHub and Azure DevOps Repos integration, but can connect to other remote repositories
Excellent Azure integration, but can deploy into most any platfor or environment.
Linux, macOS and Windows adjents
Supports most lanuages
Free for Open Source (10 parallel jobs unlimited minutes)
First agent free for closed source
Before Creating a Pipeline
Consider your branching strategy
Recommend, Trunk-based Strategy
Team shares single trunk (master) that all development is based off of.
Release Flow
Creating a Build Pipeline
YAML vs Classic
Recommend, YAML uses a yaml config stored in the source code repository to define the build pipeline.
Classic is good for learning the platform and can be used to figure out the correct yaml.
trigger
Recommend, based on changes to specified branchs
can include or exclude files and folders within the branch
can be triggered on a timed schedule
define jobs
a job us run on an agent and has its own variables and copies of source code etc.
jobs can be completed in parallel
define steps in jobs