Garden of KnowledgeApplied Sciences › Computer Science › Software › DevSecOps › CI-CD › Gitlab
May 4, 2025

GitLab CI/CD

GitLab CI/CD est un outil intégré à GitLab pour l’intégration et le déploiement continus. Il repose sur un fichier .gitlab-ci.yml à la racine du dépôt.

flowchart LR
    PUSH["git push\n(déclencheur)"]
    PIPE["Pipeline"]
    B["Stage : build\nbuild_job"]
    T["Stage : test\ntest_job"]
    D["Stage : deploy\ndeploy_job"]
    OK["Déploiement\nen production"]
    FAIL["Échec — notification\nartifacts sauvegardés"]

    PUSH --> PIPE --> B --> T --> D --> OK
    B -->|"job échoue"| FAIL
    T -->|"job échoue"| FAIL

Introduction§

GitLab CI/CD est un composant intégré de GitLab qui permet de gérer les processus de build, test et déploiement de vos projets logiciels. Il repose sur un fichier de configuration .gitlab-ci.yml situé à la racine de votre dépôt.

1. Configuration de Base§

1.3. Fichier .gitlab-ci.yml de Base§

Voici un exemple simple de fichier .gitlab-ci.yml :

stages:
  - build
  - test
  - deploy

build_job:
  stage: build
  script:
    - echo "Building the project..."

test_job:
  stage: test
  script:
    - echo "Running tests..."

deploy_job:
  stage: deploy
  script:
    - echo "Deploying the project..."

2. Variables et Secrets§

2.1. Définir des Variables§

Les variables peuvent être définies dans le fichier .gitlab-ci.yml ou dans les paramètres du projet.

variables:
  ENV: "production"
  DB_NAME: "my_database"
2.2. Utiliser des Variables§
deploy_job:
  stage: deploy
  script:
    - echo "Deploying to $ENV environment..."
    - echo "Using database $DB_NAME..."
2.3. Masquer des Variables§

Les variables sensibles (comme les tokens API) peuvent être ajoutées dans les paramètres de projet sous Settings > CI/CD > Variables et marquées comme “Protected” ou “Masked”.

3. Artifacts et Caches§

3.1. Artifacts§

Les artifacts sont des fichiers générés par les jobs et transférés entre eux.

build_job:
  stage: build
  script:
    - mkdir build
    - echo "Build output" > build/output.txt
  artifacts:
    paths:
      - build/
    expire_in: 1 hour
3.2. Caches§

Les caches sont utilisés pour accélérer les builds en stockant des fichiers comme les dépendances.

cache:
  paths:
    - node_modules/
    - .m2/repository

4. Pipelines Multi-Branches§

Vous pouvez configurer des pipelines spécifiques pour différentes branches.

deploy_job:
  stage: deploy
  script:
    - echo "Deploying to production..."
  only:
    - master
  except:
	- dev

5. Before script and After script§

before_script:
  - echo "This is before script"

after_script:
  - echo "This is after script"

5.1. Matrice de Jobs§

La matrice de jobs permet d’exécuter un job plusieurs fois avec différentes configurations.

test_job:
  stage: test
  script:
    - echo "Running tests on $DB"
  variables:
    DB: "mysql"
  parallel:
    matrix:
      - DB: ["mysql", "postgres", "sqlite"]

6. Jobs Dépendants et Environnements§

6.1. Dépendances§

Les jobs peuvent dépendre d’autres jobs.

deploy_job:
  stage: deploy
  script:
    - echo "Deploying..."
  needs:
    - build_job
    - test_job
6.2. Environnements§

Vous pouvez spécifier des environnements pour vos déploiements.

deploy_job:
  stage: deploy
  script:
    - echo "Deploying to production..."
  environment:
    name: production
    url: http://production.example.com

7. Avancées et Bonnes Pratiques§

7.1. Utiliser des Templates§

Pour réutiliser des configurations communes :

include:
  - local: '/templates/.gitlab-ci-template.yml'
7.2. Optimiser les Pipelines§
7.3. Gestion des Erreurs§

Utilisez allow_failure pour permettre à certains jobs d’échouer sans interrompre tout le pipeline.

test_job:
  stage: test
  script:
    - echo "Running tests..."
  allow_failure: true
7.4. Runners Spécifiques§

Pour des tâches spécifiques, configurez différents types de runners (Docker, Shell, Kubernetes).

Conclusion§

GitLab CI/CD offre une grande flexibilité et des capacités puissantes pour automatiser vos workflows de développement. En utilisant les fonctionnalités de base et avancées décrites dans ce tutoriel, vous pouvez configurer des pipelines robustes et efficaces pour votre projet.

N’oubliez pas de consulter la documentation officielle de GitLab CI/CD pour des informations plus détaillées et des exemples supplémentaires.

—The Gardener