spk-logo-tm-2023
0%
1-888-310-4540 (main) / 1-888-707-6150 (support) info@spkaa.com
Select Page

Continuous Integration Best Practices—Part 1

Continuous Integration is a leading software development methodology whereby new development is constantly being submitted and tested against the main body of work. The goal being rapid feedback on incremental changes, resulting in lower maintenance costs and higher levels of code stability. The purpose of this article is to begin the process of examining the best practices associated with this particular development method.

There are approximately ten key principles, as outlined below:

  1. Maintain a code repository
  2. Automate the build
  3. Make the build self-testing
  4. Everyone commits to the baseline every day
  5. Every commit (to baseline) should be built
  6. Keep the build fast
  7. Test in a clone of the production environment
  8. Make it easy to get the latest deliverables
  9. Everyone can see the results of the latest build
  10. Automate deployment

To begin, we will be looking at the first three of the principles.

1) Maintain a code repository

Having a version control system to maintain your code history is pretty par for the course these days. At this point, the issue is not simply having a repository, it’s how that repository is accessed and maintained. CI, as an ideology, is pretty opinionated about this matter. According to CI, there needs to reside a single, central repository, from which all checkouts and testing is done and to which all commits are pushed. The rationale for this is maintaining one single source of truth at all times and avoiding instances where a change works in a development environment but not production. This being the case, branching is discouraged – at least in the sense that CI does not want you to maintain parallel version of your code.

2) Automate the Build

In a CI system, builds should happen automatically when a developer submits their code, and as much as possible, should be free of manual steps. This is a prerequisite for points 3, 5, 6, and 10. Not only is this point important for the speed of the build process (which is arguably the reason for doing CI in the first place), but it imposes a standard of consistency and repeatability that is vitally important for ensuring quality and tracking progress.

3) Make the Build Self-Testing

If a build requires manual testing, then the build will be slow and the chances of errors sneaking through will also increase. Ideally, CI would prefer that all tests are run with every build, but the reality of the situation is that this is frequently not practical. In many cases it makes more sense to run the tests pertinent to the affected modules, aggregate a set of changes and then run that aggregate set through the full complement of testing. Fewer tests means a faster test execution time and quicker feedback to the developer while submitting batches of aggregate changes conserves organizational resources.

David Hubbell
Software Engineer
SPK and Associates

Next Steps:

Latest White Papers

Rovo Product Guide: Key use cases across your organization

Rovo Product Guide: Key use cases across your organization

Gen-AI is making its way into nearly all of our tools, and the Atlassian toolkit is no exception. This eBook explores use cases for Atlassian’s AI agent, Rovo. What You Will Learn In this eBook, you will discover how Rovo can help: Engineers ITSM Teams Business...

Related Resources

Ascend to the Atlassian Cloud

Ascend to the Atlassian Cloud

The future of Atlassian is here!  Leap into the future with Atlassian cloud and unlock speed, scale, and AI-powered teamwork. Atlassian has announced the sunset of Data Center products by March 2029, marking a pivotal shift to a cloud-first future. From Data Center to...

Rovo Product Guide: Key use cases across your organization

Rovo Product Guide: Key use cases across your organization

Gen-AI is making its way into nearly all of our tools, and the Atlassian toolkit is no exception. This eBook explores use cases for Atlassian’s AI agent, Rovo. What You Will Learn In this eBook, you will discover how Rovo can help: Engineers ITSM Teams Business...

How and Why to Standardize Onto One CAD Platform

How and Why to Standardize Onto One CAD Platform

Many engineering teams rely on multiple CAD systems across teams. The issue withusing multiple CAD tools is that it can lead to delays and innefficiencies. This white paper explores the benefits of consolidating onto one CAD platform.What You Will Learn In this white...