The gitlab-ci.yml file is a crucial component of GitLab’s continuous integration/continuous delivery (CI/CD) pipeline. It defines the stages, jobs, and actions that make up the CI/CD process for your project. In this article, we’ll explore the gitlab-ci.yml file in detail, discussing its structure, syntax, and various features.
What is the gitlab-ci.yml File?
The gitlab-ci.yml
file is a YAML (Yet Another Markup Language) configuration file that resides in the root of your GitLab repository. It provides a way to define the steps and tasks that need to be executed as part of the CI/CD pipeline for your project.
Structure of gitlab-ci.yml
The gitlab-ci.yml
file follows a hierarchical structure. At the top level, you define the different stages of the pipeline, such as build
, test
, and deploy
. Within each stage, you define one or more jobs that will be executed sequentially or in parallel.
Each job consists of a series of steps that define the actions to be performed. These steps can include tasks like installing dependencies, running tests, building artifacts, and deploying the application.
Syntax and Configuration
Let’s take a closer look at the syntax and configuration options available in the gitlab-ci.yml
file.
Stages
Stages define the different phases of your CI/CD pipeline. You can define any number of stages based on your project’s requirements. For example:
stages:
- build
- test
- deploy
Jobs
Jobs represent the individual units of work within each stage. Each job can have a unique name and configuration. Jobs can be executed sequentially or in parallel. Here’s an example:
build_job:
stage: build
script:
- echo "Building the project"
In the above example, build_job
is the name of the job, stage: build
specifies that it belongs to the build
stage, and script
contains the commands or scripts to be executed.
Scripts
The script
section of a job contains the commands or scripts that should be executed. You can include multiple commands or scripts, each on a new line, like this:
build_job:
stage: build
script:
- echo "Building the project"
- make build
- make test
Variables
You can define variables within the gitlab-ci.yml
file that can be used across multiple jobs or stages. Variables can be defined globally or at the job level. Here’s an example:
variables:
DB_HOST: "localhost"
build_job:
stage: build
script:
- echo "Building the project"
- echo "Database host: $DB_HOST"
In this example, DB_HOST
is a variable that can be accessed using the $
syntax, such as $DB_HOST
.
Artifacts
Artifacts are files generated during the CI/CD pipeline that can be passed between different stages or jobs. You can define artifacts within a job and specify which files to save. Here’s an example:
build_job:
stage: build
script:
- echo "Building the project"
artifacts:
paths:
- compiled_app.jar
In this example, the compiled_app.jar
file generated during the build job will be saved as an artifact.
Advanced Features
The gitlab-ci.yml
file supports various advanced features, such as:
- Caching: You can cache dependencies or build artifacts to speed up subsequent pipeline runs.
- Triggers: You can configure jobs to be triggered by specific events, such as code pushes, tags, or external webhooks.
- Environments: You can define and manage different deployment environments, such as staging and production.
- Dependencies: You can define dependencies between jobs, ensuring that one job runs only after another job has successfully completed.
Docker : Not able to access other website or git inside a docker ? Solved
DNS resolution problem : Runner is unable to resolve the domain name ‘git.com’
Git : Understanding the gitlab-ci.yml File in GitLab
Docker : Your authorization token has expired. Reauthenticate and try again – Solved
Docker : Docker not able to connect to git , what could be the reason ?
Docker : Error saving credentials: error storing credentials – err: exec: “docker-credential-ecr-login” – Solved