What is CI/CD? Introduction to CI/CD for newbies
Tags: devops, beginners, webdev, cicd
Published: 2021-01-05 09:17:01

---
title: What is CI/CD? Introduction to CI/CD for newbies
published: true
description: Learn what CI/CD is, why it's useful, and discover if you should use it as web developer.
tags: devops, beginner, webdev, cicd
cover_image: https://realtoughcandy.com/wp-content/webp-express/webp-images/uploads/2020/12/what-is-cicd-1536x1112.jpg.webp
canonical_url: https://realtoughcandy.com/what-is-ci-cd-introduction-to-ci-cd-for-2021/
---
## **CI/CD.**

You may have heard this weird little acronym floating around the web.

But what the heck is it?

And should you use it as a software developer?

Read on to find out!

## **What is CI/CD?**

CI/CD is an acronym for **continuous integration/continuous deployment.**

But it can also mean **continuous integration/continuous delivery** (more on the differences below).

Basically, CI/CD automates:
- your builds
- your tests
- your deployments

And like all good pieces of software, a good CI/CD workflow is going to save you time.

This gives the boss a happy face!

It also prevents you, the developer, from flipping your desk over in an epic rage quit. Woot!

## **What are the benefits of CI/CD?**

A few of the benefits of CI/CD include:

- Reduced production & staging errors
- Makes bugs easier to find & remove
- Easy rollbacks since changes are small & incremental
- Increase in team productivity
- Rapid feedback including automated code analysis & code health report
- Competitive advantage: you can get feedback from customers faster
- No more manual FTP deployment

## **What is Continuous Integration?**

Continuous integration isn’t necessarily a particular tool.

Think of it more as a workflow or setup. And the CI tool(s) you choose lets you execute that workflow.

For example, there’s a CI tool called Jenkins.

![jenkins ci logo butler with towel and suit and tie](https://realtoughcandy.com/wp-content/webp-express/webp-images/uploads/2020/12/jenkins-ci-logo-217x300.png.webp)

Here’s what a CI process might look like if you were using Jenkins:

1. Developers push code to a repo frequently. This could include patches, updates, and new functionalities.

2. Once pushed, a Jenkins build server tests that code.

3. Jenkins shows developers if their code has passed or failed.

If code fails: Fix code and repeat steps 1-3.

If code passes: Send to deployment environment.

In this flow, broken builds become a priority before building the next feature.

## **What is Continuous Deployment?**

Continuous deployment is the second part of the “CI/CD” equation.

And it ensures your software can be released on demand. Deployments are fast and frequent.

Remember the process from the CI section above?

Once the code passes the tests, it’s pushed to its final phase: the deployment environment.

This whole process has a name. It’s called a deployment pipeline. Further, all code changes you make go through this pipeline.

## **What’s a deployment pipeline?**

![CICD pipeline](https://d1h3p5fzmizjvp.cloudfront.net/wp-content/uploads/2019/08/29115129/CICD-pipeline-1024x354.png)

A deployment pipeline (or CI/CD pipeline) a series of validations your code flows through before it’s released to production.

For example, a simple pipeline could consist of these phases:

![simple ci/cd pipeline illustration](https://wpblog.semaphoreci.com/wp-content/uploads/2019/03/cicd-pipeline-introduction.png)
Image via [semaphoreci.com](https://wpblog.semaphoreci.com/wp-content/uploads/2019/03/cicd-pipeline-introduction.png)

And here’s a theoretical pipeline for a Go project:

![CI/CD pipeline featuring Go programming language](https://wpblog.semaphoreci.com/wp-content/uploads/2019/03/golang-ci-pipeline.png)
Image via [semaphoreci.com](https://wpblog.semaphoreci.com/wp-content/uploads/2019/03/golang-ci-pipeline.png)

These example pipelines may look relatively straightforward. However, they can get complex quickly:

![complete illustration of ci/cd pipeline with jenkins](https://cdn-images-1.medium.com/max/2000/1*N8pCkc2f7fzxsBZOEpgkDQ.png)
Image via [Medium](https://cdn-images-1.medium.com/max/2000/1*N8pCkc2f7fzxsBZOEpgkDQ.png)

Do remember that pipelines vary from company to company, project to project.

## **What is the difference between continuous deployment and continuous delivery?**

Continuous deployment simply means all changes go through a pipeline. They’re automatically deployed into production.

On the other hand, continuous delivery means means developers must manually approve the deployment.

Then once approved, the pipeline continues its automation.

![ci/cd pipeline illustration](https://blog.crisp.se/wp-content/uploads/2013/02/continuous-delivery-deployment-sm.jpg)
Image via [crisp.se](https://blog.crisp.se/wp-content/uploads/2013/02/continuous-delivery-deployment-sm.jpg)

To illustrate another way:

![ci/cd pipeline illustration](https://www.redhat.com/cms/managed-files/styles/wysiwyg_full_width/s3/ci-cd-flow-desktop_0.png?itok=QgBYmjA2)
Image via [RedHat](www.redhat.com/cms/managed-files/styles/wysiwyg_full_width/s3/ci-cd-flow-desktop_0.png?itok=QgBYmjA2)

## **What are some popular CI/CD tools?**

Some popular CI/CD tools include:

- Travis CI
- Jenkins
- CircleCI
- GitLab
- Spinnaker
- BuildKite

## **Do CI/CD tools cost money?**

It depends.

While some CI/CD tools are totally free, some are freemium and some are paid tier only.

Additionally, many are available as part of the GitHub student developer pack. This includes Travis CI.

So if you’re a student, [read this GitHub post](https://education.github.com/discount_requests/student_application) to check your eligibility.

Also, GitHub announced in 2019 that GitHub actions now supports CI/CD. This is a free feature available to public repos.

## **Should I use CI/CD as a software developer?**

### **For complete code newbies:**

Not recommended.

Is CI/CD is an incredibly powerful mechanism for your workflow? Yes.

But learning the basics of programming and workflow management 101 (i.e. Git workflow) is more important as an aspiring developer.

### **For advaced beginners:**

Give it a try!

Because if you plan on working in the industry as a software developer, there’s a good chance you’ll be using some sort of automation.

Thus, getting familiar with continuous integration & continuous deployment/delivery, even as a solo dev, is good practice.

### **For those in the industry:**

Absolutely. If you have a DevOps team, there’s a good chance they’ve implemented (or plan on implementing) a CI/CD workflow.

But if you don’t have a DevOps team, you can still get up and running with CI/CD.

## **Conclusion: What is CI/CD?**

In summary, CI/CD is a way to automate your builds, tests and deployments.

There are lots of open source tools available.

But there are also paid options if you need the upgrade.

At the end of the day, continuous integration and continuous deployment/delivery can save time and money. 

Lastly, if you’re on a dev team, it’s something you should seriously consider using.

Are you using CI/CD? If so, what tools do you prefer?