DEV Community

Cover image for Creating a CI/CD Pipeline with GitLab CI

Creating a CI/CD Pipeline with GitLab CI

"If it hurts, do it more often." Jez Humble, Co-author of Continuous Delivery

Table of Contents

  1. Introduction
  2. Why CI/CD Matters
  3. Creating a GitLab CI/CD Pipeline
  4. Sample .gitlab-ci.yml File
  5. Interesting Facts & Statistics
  6. FAQs
  7. Key Takeaways
  8. Conclusion

1. Introduction

Continuous Integration and Continuous Deployment (CI/CD) has transformed the software development lifecycle, bringing automation, speed, and quality assurance to modern DevOps workflows.
GitLab CI is a built-in tool within GitLab that allows developers to integrate and deploy their code automatically, offering a complete DevOps platform under a single UI.

2. Why CI/CD Matters

  • Reduces Manual Errors: Automates builds, tests, and deployments.
  • Speeds Up Development: Quick feedback loops for code changes.
  • Improves Code Quality: Consistent testing and reviews before deployment.
  • Enables DevOps Culture: Promotes collaboration and delivery.

3. Creating a GitLab CI/CD Pipeline

** Prerequisites**

  • A GitLab project repository.
  • Runner registered (Shared or Custom).
  • .gitlab-ci.yml file in the root of your repo.

Steps
1. Create a GitLab Repository

→ Go to GitLab → New Project → Initialize with README

2. Set Up GitLab Runner
→ Install GitLab Runner on your server or use GitLab.com shared runners.
Register using:
→ gitlab-runner

3. Add a .gitlab-ci.yml File
→ This file defines your CI/CD pipeline stages, jobs, and scripts.

*4. Define Pipeline *
stages:

  • build
  • test
  • deploy

5. Create Jobs for Each Stage
build-job:

stage: build
 script:
   - echo "Compiling code..."

test-job:
  stage: test
  script:
    - echo "Running tests..."
deploy-job:
  stage: deploy
  script:
    - echo "Deploying app..."
Enter fullscreen mode Exit fullscreen mode

6. Push Code to Trigger Pipeline

GitLab will detect the .gitlab-ci.yml file and run the pipeline automatically.
→ Sample .gitlab-ci.yml File

stages:
  - build
  - test
  - deploy

variables:
  APP_ENV: "production"

build:
  stage: build
  script:
    - npm install
    - npm run build

test:
  stage: test
  script:
    - npm test

deploy:
  stage: deploy
  only:
    - main
  script:
    - ./deploy.sh
Enter fullscreen mode Exit fullscreen mode

5. Interesting Facts & Statistics

  • Teams using CI/CD deliver 200x more frequently than those who don’t (Source: DORA Report).Source: CI/CD DORA
  • Companies that adopt CI/CD reduce deployment failure rates by 75%. Source: Reduce deployment
  • Over 60% of organizations now use CI/CD in their SDLC (Gartner, 2023). Source: Organizations
  • GitLab CI/CD can reduce pipeline build times by 30-40% with caching and parallelization. Source: Optimizing build times

"CI/CD isn’t just automation, it's a shift in mindset toward responsibility and quality." Kelsey Hightower, Google Engineer

6. FAQs

Q1: Is GitLab CI/CD free to use?
Yes, GitLab offers free CI/CD minutes with shared runners. Self-managed runners are unlimited.
Q2: What languages are supported?
GitLab CI/CD is language-agnostic. You can build pipelines for Node.js, Python, Java, Go, PHP, etc.
Q3: Can I deploy to cloud services like AWS or Azure?
GitLab CI integrates with AWS, GCP, Azure, and supports deployment via CLI or APIs.
Q4: What happens if a job fails?
The pipeline will stop (unless configured otherwise). You can inspect logs and rerun failed jobs.

7. Key Takeaways

  • GitLab CI/CD is a powerful tool to automate your entire software delivery process.
  • Pipelines are defined with a .gitlab-ci.yml file in your project’s root.
  • Jobs are grouped into stages like build, test, and deploy.
  • Runners are essential agents that execute your jobs.
  • GitLab offers flexibility, integrations, and visibility across the DevOps lifecycle.

8.Conclusion

Creating a CI/CD pipeline with GitLab CI is not just a technical enhancement—it’s a fundamental step toward faster, safer, and more reliable software delivery. Whether you're a solo developer or managing a large engineering team, embracing CI/CD with GitLab boosts efficiency, reduces risk, and sets the stage for innovation.
Hashtags

About the Author: Narendra is a DevOps Engineer at AddWebSolution, specializing in automating infrastructure to improve efficiency and reliability.

Top comments (0)