Abstract:
With companies incorporating agile software practices and with the increase in the number of developers collaborating on a given product, it becomes important to automate the development pipeline (build, test and deploy). Automation helps in reducing manual effort involved in software development, thereby increasing efficiency and making the entire system more robust. The entire development cycle can be viewed as a process of Continuous Integration (CI) and Continuous Deployment (CD), which can be achieved through several open-source tools. In the pipeline discussed in this paper, CI is achieved by creating a Jenkins job. Jenkins provides a wide range of plugins, which can be used to ease the processing required in the build tasks. A successful build results in an update of the helm chart corresponding to the application. These configuration files, which are stored in a Git repository, are constantly monitored by the ArgoCD controller, which automatically deploys the Kubernetes components of the application to the target cluster when a difference is observed between the state of the application as desired in the configuration files and current deployment in the target cluster. Thus with minimal manual intervention, developers can independently make changes to a given product and the corresponding artifacts are built and automatically deployed to production using CI/CD automation.