Automating your business processes is a very effective way to optimize and streamline your workflows. In our blog on the optimization of app development processes, we’ve already touched upon a few core aspects of this optimization process. One of these core aspects is CI/CD, or Continuous Integration and Continuous Deployment/Delivery. In software engineering, continuous integration can be defined as the practice of merging all the work of the developers to a shared central mainline several times a day. The goal of CI is to establish a consistent way to build, package, and test applications. This consistency allows a team of developers to continuously check the correctness of the code, which leads to better collaboration and software quality.
Continuous delivery/deployment is an approach in which software functionalities are delivered through automated deployments. So, the core functionality of CI/CD is a golden combination of automation, collaboration, and centralization, which ensures the agility of your development processes.
Now we know what CI/CD stands for within the area of software/app development, it’s time to understand how it’s implemented, and how CI and CD work together in perfect harmony to optimize and streamline the development process.
CI/CD: an intertwinement of automation
CI and CD are not two just practices put together at random. They are combined into one effective strategy because they work so well together. With CI, each change in code triggers an automated build-and-test sequence for the given project, providing feedback to the developer(s) who made the change. Continuous Delivery includes infrastructure provisioning and deployment, which may be manual and consist of multiple stages. What’s important is that all these processes are fully automated, with each run fully logged and visible to the entire team.
During the development process, the team can run into several challenges, such as:
- Merge conflicts
- Last-minute build fails
- Manual testing that takes up too much time
- Too many manual steps within the deployment process
Most of these issues can be solved with CI/CD. During development, small incremental code changes tackle issues 1 and 2 (merge conflicts and last-minute build failures). By including continuous testing for each of these incremental changes we can speed up the testing process solving item 3 (manual testing that takes up too much time). Once these changes are pushed to a Version Control System (VCS), to integrate all code changes together, the CD can begin. A VCS is a system that records changes to a file over time so that users can recall specific versions in a later stage of the development process. An example of a VCS is Git, which helps developers track changes in source code during the development process.
As mentioned before, the CD part handles all the environment configurations so that everything is deployment-ready for each environment, which addresses item 4 (too many manual steps within the deployment process).
Together, this creates one of the most powerful aspects of automation: the progression from manual labor to automated procedures. Not only does it speed up the development process it also reduces the risk of human error.
Working agile with CI/CD
As mentioned before, business process automation is probably one of the most effective ways to streamline your workflows. But how exactly does CI/CD relate to automation and working agile? The process of CI/CD in software is often called a CI/CD ‘pipeline’ due to its relation to the workflow. It can relate to process automation, because as soon as a developer commits a piece of code to the VCS, an automation process can be started to deliver the changes to the production. Most VCS platforms come with CI/CD pipelining, which can be configured to start a complete automatic process, from code checking (CI) to code deployment (CD).
Because of its ability to streamline workflows, CI/CD is an often-used strategy in businesses working with agile methodologies, such as scrum sprints. Agile focuses on a way of working that focuses on small incremental changes and enables the team to adapt, change, and continuously improve the application that’s being worked on. The whole idea behind CI/CD is the same, only for software itself. The "CI" part is all about developers committing small incremental code changes, while the "CD" part is about being able to continuously deploy these changes frequently and quickly.
High-functioning CI/CD practices directly facilitate agile development, because all changes made in the software are continuously being delivered to and tested by the end-users. As a result, customers have more opportunities to experience the product and provide feedback. Not only does this streamline the workflow, it also makes sure that the customer doesn’t end up with a product they’re not satisfied with.
CI/CD at Lizard Global
At Lizard Global, we use GitLab as our Version Control System. We incorporate the CI/CD pipeline that’s integrated in the VCS for all our projects by configuring each code base to a test & production environment. Each developer will carry out his/her code implementation and push it into GitLab. The senior developer will then review all the code that has been pushed, and merge it into a "test" branch. Most often, the trigger to deploy the changes to the testing environment is manually carried out by the senior developer in charge of that project, every two weeks (at the end of a Sprint). The trigger will run the CD which will deploy the new changes to the testing environment.
The testing environment will be delivered to the client at the end of each sprint, to carry out a so-called User Acceptance Testing (UAT). During a UAT, users will test the software to make sure it can handle required tasks in real-world scenarios. Once UAT approval is received and approval is given to deploy to production, the senior developer will merge the development changes into a "master" branch in the VCS, which is tied to the production server. This trigger is mostly automated, which means that, as soon as the senior developer implements the development changes into a master branch, the CD will run automatically to deploy to production.
Need a hand?
We understand that topics related to software development sometimes need a little bit more explanation, especially if you’re not familiar with the technical specifications. At Lizard Global, our software experts are more than happy to tell you all about CI/CD and other topics. This way, you’re up-to-date with all the Lizard Global app development processes. Get in touch with us, and we tell you all you need to know about Lizard Global and our methodologies.