Sharing notes from my ongoing learning journey — what I build, break and understand along the way.
What Is CI/CD?
What Is CI/CD?
Hi there!
I recently started learning about a topic called CI/CD, and I wanted to write down what I’ve understood so far — in a clear, simple way.
When I first came across it, I had questions like:
“What is this system?”
“Why is it used?”
“What does the name even mean?”
If you’re also just hearing about this for the first time, maybe this post will help.
What Is CI/CD?
CI/CD is an approach that helps automate how code is tested and delivered (or deployed) during software development.
Let’s break down the name:
Abbreviation | Meaning | What It Does |
---|---|---|
CI | Continuous Integration | Automatically test and merge code changes |
CD | Continuous Delivery / Deployment | Automatically send code to a server (for release) |
The goal is:
- To detect errors early
- To avoid doing repetitive tasks manually
- To make development faster and more reliable
What Does CI (Continuous Integration) Do?
CI is all about testing the code automatically every time there’s a change.
Let’s say multiple developers are working on the same project. When one of them makes a change and pushes it to the shared repository:
- The code is tested immediately
- Any errors or broken parts are caught before merging
- Code style or formatting rules are also checked
This way, we can find problems before they go live.
What Does CD (Continuous Delivery / Deployment) Do?
Once the code has passed all the tests, CD takes it one step further:
- It automatically prepares the code to be deployed to a server
- Sometimes, it even automatically pushes it live to users
There are two main types:
Type | Explanation |
---|---|
Continuous Delivery | Code is sent to a test environment automatically. A human must approve it before going live. |
Continuous Deployment | Code goes directly to the live system after passing tests — no manual step. |
Right now I’m still learning, and haven’t tried this part in a real project yet. But reading about it helped me understand how the flow works.
What Tools Are Involved?
While researching, I noticed these tools come up a lot in CI/CD discussions:
- GitHub Actions – allows setting up CI/CD within GitHub
- GitLab CI, Jenkins, CircleCI – CI/CD tools for different workflows
- Docker – helps bundle apps into portable units
- Kubernetes – used to manage many app instances
- Test Frameworks – like
Jest
,Pytest
, orJUnit
to run tests
What Does “Pipeline” Mean?
This was one of the first confusing words for me.
A pipeline is basically a step-by-step list of what should happen when code is pushed.
For example:
Step 1: Get the code
Step 2: Install dependencies
Step 3: Run tests
Step 4: If successful, deploy
These steps are usually written in a .yaml
file. The CI/CD system reads it and runs the process automatically.
Some Security Tips I Learned
Even though I haven’t applied this yet, I came across important notes:
- Don’t include secret keys or
.env
files in your code repository - Use “secret” storage in your CI/CD platform (like GitHub Secrets)
- Avoid giving too much access to your pipelines
- Keep logs and review them
- Be careful with credentials during deployments
So yes, CI/CD systems are automated — but they still need to be handled carefully.
Who Uses CI/CD?
- Software teams
- Startups
- Open source projects
- Even individuals can use it in their own side projects
It’s especially useful when:
- Multiple people are working on the same code
- Code is being updated often
- Manual deployments take time
- You want reliable and fast feedback