Applez Nous: +41 22 518 70 00
GitLab propose une intégration CI/CD native pilotée par un fichier unique à la racine du dépôt : .gitlab-ci.yml. La force de GitLab réside dans sa gestion hiérarchique explicite des étapes (stages) :
stages:
- test
- build
- deploy
Tous les jobs appartenant à une même étape s’exécutent en parallèle dès que les runners sont disponibles. L’étape suivante ne démarre que lorsque tous les jobs de l’étape précédente ont réussi.
# Fichier : .gitlab-ci.yml
default:
image: python:3.11-slim
# Mise en cache pour accélérer les exécutions successives
cache:
paths:
- .cache/pip
- venv/
variables:
PIP_CACHE_DIR: "/.cache/pip"
test_unitaire:
stage: test
script:
- python -m venv venv/
- source venv/bin/activate
- pip install -r requirements.txt
- pytest tests/ --junitxml=report.xml
artifacts:
when: always
reports:
junit: report.xml
build_image:
stage: build
image: docker:24.0
services:
- docker:dind
script:
- echo "" | docker login -u "" --password-stdin
- docker build -t : -t :latest .
- docker push --all-tags
only:
- main
deploiement_staging:
stage: deploy
script:
- echo "Déploiement automatique sur le cluster Staging de Genève..."
environment:
name: staging
url: https://staging.educasuisse.ch
only:
- main
deploiement_production:
stage: deploy
script:
- echo "Déploiement en Production sous haute surveillance..."
environment:
name: production
url: https://educasuisse.ch
when: manual # Exige un clic humain explicite pour valider la mise en production
only:
- main
GitLab Environments & Review Apps : GitLab permet de provisionner dynamiquement un environnement éphémère complet pour chaque Merge Request ouverte, permettant à l’équipe produit de tester visuellement la nouvelle fonctionnalité avant même sa fusion dans le tronc commun.