CI/CD workflow
Continuous integration (CI) π refers to the implementation of an ongoing workflow that is executed regularly within the development process. Common tasks often found in CI workflows:
- Code Compilation π¦: compile the project
- Testing π§ͺ: execute unit tests, ui tests...
- Code analysis πͺ²: execute static and/or dynamic code analysis... to find bugs, code smells, dead code...
- Code quality π«§: formatting, code style...
- ...
Continuous development (CD) π further extends it with the continuous deployment of artifacts. Common tasks are:
- Monitoring π: generate and alert about metrics such as tests failed, code analysis failed, code quality not met...
- Documentation π: deploy generated documentation website
- Release π: deploy a release build
- ...
All tasks may be executed on-demand or at specific events.
Benefits
Testing
You can configure your workflow to test your code in different environments (ex: Linux, Windows, macOS) and using different versions of tools (ex: different versions of node-js/java/...).
Isolation
Continuous workflow can work in isolated and reproducible environments, ensuring that the code does work on other machines.
Save time
It may take some time to implement complex CI/CD workflows, but once implemented, they reduce the time taken to manually perform tasks that could be automated.
ποΈ External Solutions ποΈ
There are many tools that can be integrated during CI/CD workflows that provide code quality, security reviews, dependency monitoring... Most are paid and free for open-source projects.
Code quality, coverage, and reviews
- sonarcloud (quite a lot of feedback)
- codefactor (good)
- deepsource (not very deep)
- lgtm.com (deprecated, see code scanning)
- codecov (π»)
- codacy (π»)
- scrutinizer-ci (π»)
- CircleCI (π»)
- codeclimate (π»)
- coveralls (π»)
- gerritcodereview (π»)
π» To-do π»
Stuff that I found, but never read/used yet.
- Basics of CI/CD
- gitpod
- Travis (π»)