Episode 143 – Azure Pipelines




The 6 Figure Developer Podcast show

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