Operations 19 min read

Mastering GitLab CI/CD: Core Concepts, Pipelines, and Best Practices

This article provides a comprehensive overview of GitLab CI/CD, covering its core concepts—pipelines, stages, jobs, and runners—along with .gitlab-ci.yml configuration, variables, triggers, DAG pipelines, runner types, cloud‑native capabilities, efficiency management, and practical demo examples to help teams implement robust DevOps workflows.

Taobao Frontend Technology
Taobao Frontend Technology
Taobao Frontend Technology
Mastering GitLab CI/CD: Core Concepts, Pipelines, and Best Practices

GitLab CI/CD Overview

GitLab CI/CD is the built‑in continuous integration and delivery solution of GitLab. It consists of CI (integration) and CD (deployment) stages that run pipelines when merge requests are submitted.

Core Concepts

The four core concepts are Pipelines, Stages, Jobs, and Runners.

Pipelines

Pipelines are the top‑level definition of a CI/CD flow. A pipeline contains Jobs and Stages. Jobs define the actual commands (e.g., compile, test). Stages define the order in which jobs run; jobs in the same stage run in parallel while stages run sequentially.

Stages

Stages are containers for jobs. They execute sequentially, and jobs within a stage run concurrently.

Jobs

Jobs are the smallest executable units, run by Runners. If any job fails, the pipeline stops; otherwise it proceeds to the next stage.

Runners

Runners are lightweight, extensible agents that execute jobs. They can run on Linux, macOS, Windows, FreeBSD, Docker, or Kubernetes and support many languages.

Pipeline Requirements

To run a pipeline you need a

.gitlab-ci.yml

file at the repository root and at least one registered Runner.

.gitlab-ci.yml File

The YAML file defines job structure, execution order, and runner behavior. A simple example:

<code>stages:
  - build
  - test

build-code-job:
  stage: build
  script:
    - echo "Check the ruby version, then build some Ruby project files:"
    - ruby -v
    - rake

test-code-job1:
  stage: test
  script:
    - echo "If the files are built successfully, test some files with one command:"
    - rake test1

test-code-job2:
  stage: test
  script:
    - echo "If the files are built successfully, test other files with a different command:"
    - rake test2
</code>

Trigger Methods

Code changes (push/MR)

Manual UI trigger

Scheduled trigger

API trigger

Variables, Parameters, and Environment Variables

All variables are stored as environment variables and can be referenced with

$VARIABLE_NAME

. GitLab provides predefined variables and allows custom, group‑level, and instance‑level variables.

Expressions

Expressions can use operators such as &&, ||, ==, !=, =~, !~, and parentheses to control job execution.

Content Execution

Jobs execute shell commands or scripts defined in the

script

section.

Artifacts & Cache

Artifacts store files produced by a job for later stages. Cache stores dependencies to speed up subsequent jobs.

Pause & Resume

Setting

when: manual

allows a pipeline to pause and be resumed manually.

Parallel & Serial Execution

Stages run serially, while jobs within a stage run in parallel. The

needs

keyword creates DAG‑style dependencies, allowing jobs to start as soon as their dependencies finish.

Conditional Execution

Jobs can be conditionally run using

rules

,

only

,

except

, or

when

.

Retry & Cancel

The

retry

keyword enables automatic retries; pipelines can also be cancelled manually.

Logging Features

Jobs can emit colored logs with ANSI escape codes and define collapsible sections for large log outputs.

Runner Types & Executors

Runners can be shared, group, or specific to a project. Executors include Shell, Docker, Kubernetes, VirtualBox, Parallels, and custom options.

Cloud‑Native Capabilities

Immutable Docker images for reproducible environments

Kubernetes integration for automated DevOps, deployment panels, and canary releases

Cloud deployment templates for containers and k8s clusters

Efficiency Management

Pipeline efficiency impacts development speed. Identify bottlenecks by examining stage and job durations, DAG critical path, runner resources, cache usage, and image size. Best practices include using

interruptible

, proper

rules

, early‑failure design, DAG pipelines, caching, and small Docker images.

Key Features of GitLab CI/CD

Multi‑platform support (Unix, Windows, macOS)

Multi‑language support

Parallel builds

Versioned pipelines via Git

Automatic scaling

Artifacts and protected variables

Docker and Kubernetes integration

Simple Demo Pipeline

A demo repository demonstrates variable definition, expression testing, caching, artifacts, conditional jobs, manual pause, DAG, and retry.

References

Continuous Integration (CI) with GitLab

GitLab CI/CD documentation

Pipeline Efficiency

Modernize your CI/CD

GitLab Runner

Pipeline success and duration charts

DockerDAGdevopsYAMLGitLab RunnerGitLab CI/CDCI/CD pipelines
Taobao Frontend Technology
Written by

Taobao Frontend Technology

The frontend landscape is constantly evolving, with rapid innovations across familiar languages. Like us, your understanding of the frontend is continually refreshed. Join us on Taobao, a vibrant, all‑encompassing platform, to uncover limitless potential.

0 followers
Reader feedback

How this landed with the community

login Sign in to like

Rate this article

Was this worth your time?

Sign in to rate
Discussion

0 Comments

Thoughtful readers leave field notes, pushback, and hard-won operational detail here.