As software change all time, modern software development needs a system, which checks these changes for:
- can be built?
- can be started?
- is working as expected
- is secure
A Continuous Integration System (CI) is an essential tool in our workflow and can:
- Setup a system similar to production
- Builds the whole project by using the code from a Git repository
- Run the whole test suite
- Maybe run additional stuff like security checks or license checks
But it can do even more.
A Continuous Integration System may help or even handle updates and especially security updates of third-party components semi or full automatically.
- Prepare an update in a separate environment
- Collection information according to changes and prepare for developer
- Handling open updates, which were updated by a newer version
Hardware, Operating Systems, Frameworks, Programming Languages, and many other things change over time. Checking them manually is a repetitive and error-prone task. These tasks can be checked through a CI System, without directly bothering the core software team. These tasks are:
- Build and run the project on relevant hardware
- Build and run the software on relevant operating systems and versions
- Build and run the software on a different version of the programming language
- Build and run the software on different framework versions, the project relies on
As you can see, these combinations may lead to dozens and in some projects hundreds of different combinations, which must be checked. A CI System can handle these through a corresponding setup and without user interactions on every software change.
A Continuous Integration System can run almost any important task you may encounter like:
- Check missing translations
- Security Audits
- Code Quality Audits
- Code Style Audits
A very important part is the automation of repeating tasks, which rise the quality and reliability of a software project.
Continuous Integration can handle a lot of different tasks - even for a one-person software team. In the long run, you will save a lot of resources, time and money.
Removing repetitive, boring, and error prone work from your development team increases happiness and pace of your project.