What is Continuous Integration (CI)?

Having a Continuous Integration pipeline is considered an essential part of modern development workflows. But why should you use such a tool, and what tools are available? We look into the various reasons we believe this is an indispensable part of your daily coding workflow.

What is Continuous Integration (CI)?
Like a wonderfully engineered watch, code quality starts with processes that should just be 'automatic' | Photo by John Torcasio / Unsplash

When developing code on any platform, it is always preferable to know that the changes you make are not going to break the application or workflows for other developers.

Traditionally, a suite of manual tests might be run periodically against the code, or developers were relied on to test and verify their own code before checking in. Peer reviews might also catch some mistakes.

But there are various reasons why these are no longer considered best practise:

  • How long does it take you to catch a mistake?
  • Why would you rely on someone who believes the code works before they even start testing it?
  • What if you broke something way in a different part of the codebase? As a human, you might never think to test everything - and after all, testing everything would take for ever right?

So we need someone or something who never tires, who is entirely impartial and who can work through the night to do all these things all the time - even when Jane wants to test her work at 4am because that suits her working schedule best.

Enter: CI Platforms

Continuous Integration, or CI, platforms are a ubiquitous tool in modern development environments. They allow the automation of many aspects of development including:

  • Static code analysis
  • Basic peer review checks
  • Compilation & runtime checks
  • Running of automated test suites
  • Blocking code merges based on rules and analysis of the above

CI pipelines can also be combined with Continuous Deployment (CD) pipelines to setup development, test/integration environments and even 'push to production' style environments where live customer-facing environments are deployed for immedate use. The benefit of this is that usually such pipelines have various intricate working parts, or need security authorisation, or just have so many steps that automating the deployment of applications makes perfect sense - humans are just prone to mistakes, especially when it comes to repetetive tasks.

At Cyclick Development we are running a series of posts dedicated to showing some of the tools available and contrasting them with one another. Each tool has strengths and weaknesses which make them great for some workflows and environments.