Any developer knows that a development pipeline can be a complicated and somewhat rigid set of tasks to work with, so imagine having the flexibility to rework and debug changes, easily collaborate with other developers, and implement changes gradually. In the past, this simply wasn’t possible; setting up a development pipeline almost always required you to run several different applications to make configuration changes which were rarely tracked, backed up, or annotated. They also couldn’t be easily debugged or rolled back if there was an issue.
So, what exactly does this mean? Instead of running these different applications to configure the steps of your build pipeline, you use something like the open standard YAML to create instructions/code that creates your development pipeline as needed. Some people may prefer to use full programming languages, since pipelines can be complex. However, with parameterization, configuration, etc., YAML or some other directive type format can serve the purpose in most, if not all, cases. No matter which path you choose to take, though, whether it’s using YAML or a full programming language, implementing pipeline as code comes with a number of benefits. Here are the top three.
1) Encourages experimentation
The code, YAML, or whatever you decided on, is checked into your source control repository with its accompanying source code where it is versioned, tracked, and backed up. It can also be branched easily along with your source code for experimental improvements to the process. Before pipeline as code, if some problem arose after a build change, there usually was no way to go back to what worked to debug the change or changes that caused the issue. With pipeline as code being stored in your repository, you can easily generate a diff to see what changed, or you can roll back breaking changes to get back on track quickly.
2) You’ll get versioned builds
Another benefit of pipeline as code is that as the application and the build pipeline changes over time, the correct version of the pipeline sticks with the same version of that software. It’s saved in the source control repository, safe and sound to where even older versions can be pulled down, used, tested, and deployed if needed, without fear that the build pipeline is now configured for a different version. This way, you won’t have to make potentially breaking modifications to the current build pipeline.
With pipeline as code, it’s easy to collaborate on builds. When using other methods, you’re typically locked into using a tool that is an all or nothing option for edits to the process, but since pipeline as code, is, well, code, it can be edited in the traditional way that source code is and can be reviewed in the usual code review fashion. Changes to different stages of the process can be done by multiple people simultaneously and then merged together.
If you’re worried about a wholesale change in how you do your build, testing and deployment process, rest assured that your shift to storing your pipeline as code in your repository doesn’t have to be all at once. Some in your organization may be resistant to doing one big change, and you can assuage their fears with the knowledge that you can implement it gradually, so there’s no reason to hold back from getting started on this path.
Now is the time to get started
There are many tools on the market that support pipeline as code now, but it’s up to you and your organization to choose the one that best fits your needs. In each case, vendors have taken a lot of time assembling useful information to help make your implementation a successful one. This knowledge combined with the benefits above mean you shouldn’t be afraid to get started, and make the change to pipeline as code.
About the Author
Barry Christian has been writing software professionally for over 30 years, and is currently the .Net Practice Lead in Rural Sourcing’s Augusta Development Center. He’s been involved with Microsoft’s dotnet platform since its inception, and has helped author white papers for Microsoft, as well as written code for their official training curriculum. Barry is also a humor columnist for The Augusta Medical Examiner, and has published a mystery/thriller novel and is currently working on another.