Let’s have a look back at the Best Practices of Continuous Integration that Martin Fowler described in his blog. We will check which tool is used for which purpose.
Practice 1 – Maintain a Single Source Repository
Everything you need to build your source code and run your software should be kept in a version control system (VCS). According to a simple Google Trend analysis, Git is the most popular VCS around. GitHub is the most popular Git repository hosting service. If you want to host your Git repositories on your own servers, GitLab might be the right tool for you. I have installed and used GitLa b for several customers and so far we are quite happy with it. The software runs stable with moderate hardware …show more content…
Practice 4 – Everyone Commits To the Mainline Every Day
In order to integrate all code changes continuously it is necessary that every developer commits their code daily to a Git repository. In case the developer computer crashes, the code changes in the main repository are at least up to date. Additionally, the CI build can verify right away if new changesets break existing code. In case problems arise, it’s much easier to roll back the latest changeset, instead of figuring out the problem in a couple weeks worth of …show more content…
Mock slow systems in order to speed up your tests.
6. In case the previous steps can not be further improved, run long-running test suites during nightly builds.
Practice 8 – Test in a Clone of the Production Environment
Most of the time it is easy to create a copy of your production environment and it is simply a matter of doubling a couple of servers.
Practice 9 – Make it Easy for Anyone to Get the Latest Executable
Every artifact that is built using Jenkins gets versioned and deployed to an artifact repository. The most widely used artifact repositories are Nexus from Sonatype and Artifactory from JFrog. They are both Open Source and provide a REST API for integrating them with other build tools.
Practice 10 – Everyone can see what’s happening
All CI tools like Jenkins, GitLab, Nexus and SonarQube should be accessible for all team members. All tools provide LDAP integration and customizable permission schemes. This adds full transparency to all of your software projects and keeps teams motivated to fix broken builds and failing unit tests.
• GitLab provides a nice dashboard which displays the latest code changes
• Jenkins provides a customizable dashboard with all jobs results
• SonarQube provides a customizable dashboard with the latest static code analysis