Granny's Programming Pearls
"inside of every large program is a small program struggling to get out"
Help coderanch get a
new server
by contributing to the fundraiser
  • Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other Pie Elite all forums
this forum made possible by our volunteer staff, including ...
  • Campbell Ritchie
  • Jeanne Boyarsky
  • Ron McLeod
  • Paul Clapham
  • Liutauras Vilda
  • paul wheaton
  • Rob Spoor
  • Devaka Cooray
Saloon Keepers:
  • Stephan van Hulst
  • Tim Holloway
  • Carey Brown
  • Frits Walraven
  • Tim Moores
  • Mikalai Zaikin

Learning GH Actions: What exactly is CI/CD?

Ranch Hand
Posts: 49
Firefox Browser Java Windows
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Hi Brent,

How would you describe continuous integration and continuous delivery? Thanks.
Posts: 11
  • Likes 1
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Hi Carl, thanks for the question. There's an analogy I like to use for CI/CD and DevOps for producing software as being like an assembly line. That is, like an assembly line produces mass goods in a fast, automated and reproducible manner (like a car manufacturing plant) a software delivery pipeline generates releases from source code in a fast, automated, and reproducible manner.

The CI/CD pipeline is like the assembly line.
The process that kicks off the assembly line by feeding in raw materials is referred to as Continuous Integration. In its simplest form this means that a process or application is either watching for updates in a source management system or is notified via a hook or such that content has been updated in the source management system. The change is pulled and put into the pipeline as base materials are added on to the start of an assembly line.

In an assembly line, the base materials pass along various stations where they can be modified or added to, etc. as steps towards the finished product.

In the software pipeline, the changed source code passes through stations (stages) where it is automatically built into binaries, tested, packaged with other modules, etc.  That overall process is called Continuous Delivery. Given changed input, it is always ready to run and deliver the end result without manual intervention.

As the product passes along the assembly line, it is transformed more and gets more complex. In a similar way, the software gets more complex as it goes through the pipeline from source to module to being combined with other modules, etc.

As an assembly line has quality control checkpoints at various places along the line, so CI/CD has quality control in the form of different automated testing  at different points - unit testing, functional testing, integration testing, etc. This is "continuous testing."
The overall design for how this is done is called Continuous Delivery.

Once completed, the product from the assembly line can be automatically shipped and delivered or it could be stored for some period of time.

Likewise, the software produced from the CI/CD pipeline can be automatically deployed (if we choose) or it can be set aside and a manual decision made of which version to deploy and when.

I could go on, but I've probably labored this analogy enough. Done correctly, a CI/CD pipeline minimizes barriers, handoffs, and confusion among development teams and operational teams—goals that are part of the DevOps approach to software delivery.

GitHub Actions is an automation platform that can be used (among other uses) to implement CI/CD easily for changes that happen in GitHub repositories.  

Hope this helps.  
Something must be done about this. Let's start by reading this tiny ad:
We need your help - Coderanch server fundraiser
    Bookmark Topic Watch Topic
  • New Topic