by Dan Illson, Cloud Solutions Architect for VMware Cloud Services
Implementing a modern software development process is a complex endeavor involving a combination of philosophies, practices, and tools to accelerate the development and deployment of new services. As more teams adopt 'agile' and 'DevOps' mentalities, the necessity of building and maintaining well architected integration and deployment pipelines increases.
Continuous integration (CI) and continuous deployment (CD) are two practices essential to modern software development practices. These two practices may feed into a cultural shift to cultural philosophies such as 'DevOps'.
Continuous Integration is a practice of having each developer merge their code changes into a central repository, at which point automated build and test operations are run. The intent of this process is mainly to increase velocity through finding and mitigating bugs more rapidly, and reducing the time required to validate and release software updates. These effects should increase overall software quality over time.
Continuous Deployment is a delivery practice through which code is automatically built, tested, and prepared for release. This process extends Continuous Integration by deploying code into testing, staging and/or production environments after software artifacts are built. As a result of this process, developers should always have a deployable software artifact which has been verified through a standardized testing process.
When properly implemented, the development centric aspects of these processes directly influence the operations procedures of the code under development. In turn, lessons learned through operating the software then influence the planning and development of additional features and capabilities, as depicted below.
There is an entire ecosystem of tools across the industry which has been created to deliver CI/CD capabilities. Some are discrete, focusing on one capability or the other, while others have a broader vision and encompass elements of both functions.
The Public Cloud Solutions team at VMware (of which I am a member) has been publishing material on these topics in blogs.
My colleague Tim Davis has written on the topic of using Code Stream, a SaaS based pipelining tool offering from VMware, to deploy code into a VMware Cloud PKS Kubernetes cluster. VMware Cloud PKS is a fully managed Kubernetes cluster-as-a-service offering. The blog demonstrates how to create a pipeline from scratch, and publish an app with the code in GitHub from Code Stream into VMware Cloud PKS. Tim's blog can be found here: A Pipeline Story: Code Stream and Cloud PKS.
I have also written a series of blogs on utilizing VMware Cloud PKS, and the CloudBees Core implementation of Jenkins. This series walks through a complete CI/CD journey. The three parts focus on building a Kubernetes cluster and installing Jenkins, defining a pipeline in Jenkins, and ultimately configuring a webhook to automatically trigger the pipeline whenever code is pushed to a specified GitHub repository. I have published this work as a series of three blogs:
- Deploying CloudBees Core on VMware Cloud PKS
- Building a Jenkins Pipeline which Deploys to VMware Cloud PKS
- Triggering a Jenkins Pipeline on ‘git push’
Please connect with me regarding any questions or comments.