Continuous Integration lets you integrate code changes into a shared repository routinely and frequently. Follow these simple rules to make a habit of it.
What Is a Continuous Integration
Continuous Integration (CI) is a practice of integrating code changes on a daily basis. Everything that has been developed keeps integrating together on a regular basis. Each integration is automatically and immediately verified and tested to detect any possible errors.
CI helps to develop the product faster - if you do the integration as the last step of the developing process, the project can get stuck for a long time before it is finished. It is impossible to estimate how long the whole integration takes. It is much better to do it immediately, and frequently, and fix any errors as soon as they are found. That way the workflow is more efficient and the cognitive load is reduced.
CI helps the developers to verify that the changes they made in the code are not going to break anything. They can catch any problems before their changes reach the production stage.
CI is usually implemented with Continuous Delivery (CD) - a practice for producing software in short cycles. You can use one of many tools for both CI and CD, such as Jenkins, Travis CI, GitLab, and others. Those tools integrate and test the code changes automatically. For more information, see Top 8 Continuous Integration Tools.
Why You Might Want the Continuous Integration
Continuous Integration helps your team by:
Reducing the integration risk When multiple people work on the same project, they usually work on separate tasks or separate parts of the code. It can be tricky to integrate their work together. Integrating frequently reduces the potential risk of problems to a minimum.
Detecting possible problems before they break anything The automatic tests let you know immediately if there are some problems. It helps you fix the problems before the code changes break anything.
Improving the code quality The developers can concentrate on their work better if they do not have to worry too much about the problems the integration might bring.
Improving the quality of life for testers Multiple code versions help to isolate the bugs more efficiently.
Increasing the confidence and morale of the team Developers can concentrate better on their work, avoiding the anxiety associated with deploying changes to production.
Better integration of new members New members can get into the project much easier. CI enables them to have a clear vision of the building process, and any errors will be quickly picked up, minimizing any negative impact.
Problems the Continuous Integration Helps to Solve
- Demotivated team
- Increased cost
- Unsuccessful product
- Toxic team culture
- "Not my problem" mentality
- Meaningless work
How to Implement the Continuous Integration
Follow these simple rules:
Check the code frequently After you check the code, commit the changes to the shared repository. Do not commit broken code.
The CI tool monitors the shared repository The CI tool checks code changes after you commit them.
Run unit tests Write tests for each code change that you integrate to the shared repository. It is important to get used to this step and not to skip it. The CI tool highlights problems and alerts the team when the build or test fails.
Fix problems immediately All tests must pass.
Avoid breaking the code
Common Pitfalls of the Continuous Integration
Too much work It can seem like implementing the CI would bring more work for the developers. The opposite is true - you already have to build, test and deploy your product. If you do it continuously, it consumes less time as issues are picked up quickly. The more complex the product gets, the more difficult it is to manage it, or apply retrospective fixes.
Relying on the CI too much The CI is as good as the test results. If the developers have to fix problems too often, it slows down the development.
Hardware/Software costs It can seem like an expensive change. In reality, the costs are marginal comparing to the cost of maintaining more complex products at the later stages of development.
The project is too small Implementing the CI can be time-consuming. Writing the tests takes a long time. Ensure that you do not spend more time implementing this practice than actually developing the product. On the other hand, even small projects can benefit from the CI if they use the proper CI tools that are easy to set up. Try, for example, Travis CI or Circle CI.
Resources for the Continuous Integration
Want to write for DXKB?
Feel free to contribute. People from DXKB community will be more than happy.
Practicing Continuous Delivery means that you adopt practices to be ready to release product changes any time you want. Your product is always ready to deploy to production.Read more
DevOps is a set of practices that brings development and operations teams together. The collaboration helps to release software much faster.Read more
An Automated Deployment allows an application to be deployed across various stages of the development process. It minimizes the need for manual intervention.Read more
Code Review is an important practice for checking each other's code. The reviewers are other developers from the team. The goal is to uncover potential mistakes that could slip through testing.Read more
A Bus Factor measures the minimum number of team members who have to be hit by a bus to put the project in jeopardy. The goal is to increase your Bus Factor as much as possible.Read more