đŠ Configuration GitLab CI - Guide Rapide¶
Date : 2025-11-12 Durée : 10 minutes
đ Vue d'ensemble¶
Votre pipeline GitLab CI est déjà configuré dans .gitlab-ci.yml.
5 stages configurés : 1. terraform : Déploiement infrastructure 2. ansible : Configuration serveurs 3. test : Tests d'intégration 4. deploy : Déploiement application 5. verify : Vérification post-déploiement
âïž Configuration requise (5 min)¶
1. Variables GitLab CI/CD¶
Dans votre projet GitLab : Settings â CI/CD â Variables â Expand â Add variable
Variable SSH_PRIVATE_KEY¶
| ParamĂštre | Valeur |
|---|---|
| Key | SSH_PRIVATE_KEY |
| Value | Contenu de votre clé privée SSH |
| Type | File |
| Environment scope | All |
| Protect variable | â Oui |
| Mask variable | â Oui |
# Pour obtenir votre clé SSH
cat ~/.ssh/id_rsa
# Copier tout le contenu (y compris -----BEGIN/END-----)
Variable SLACK_WEBHOOK_URL (Optionnel)¶
| ParamĂštre | Valeur |
|---|---|
| Key | SLACK_WEBHOOK_URL |
| Value | https://hooks.slack.com/services/YOUR/WEBHOOK/URL |
| Type | Variable |
| Protect variable | â Oui |
| Mask variable | â Oui |
đ 2. Pipeline Schedule - ExĂ©cution Quotidienne (3 min)¶
Dans votre projet GitLab : CI/CD â Schedules â New schedule
| ParamĂštre | Valeur |
|---|---|
| Description | Daily Integration Tests |
| Interval Pattern | 0 2 * * * |
| Cron timezone | UTC ou votre timezone |
| Target branch | main ou develop |
| Activated | â Oui |
Variables optionnelles : - Nom : RUN_TYPE - Valeur : scheduled
đ 3. Runner Configuration (VĂ©rification)¶
Le pipeline utilise 3 types de runners selon les jobs :
| Tag | Usage | Localisation |
|---|---|---|
ovh-docker | Build, tests, sonar | VPS OVH (Docker) |
ovh-shell | SSH, Terraform, Ansible | VPS OVH (Shell) |
ovh-internet | Lint, tests réseau externes | VPS OVH (Docker bridge) |
VĂ©rifier les runners¶
Settings â CI/CD â Runners â Expand
Vérifier que les runners suivants sont disponibles et actifs :
- â
ovh-docker : Runner Docker avec
privileged=true - â ovh-shell : Runner Shell pour les commandes SSH/Ansible
- â ovh-internet : Runner Docker en mode bridge (isolation rĂ©seau)
Si runners OVH manquants :
- Exécuter le playbook Ansible pour configurer les runners
- Documentation :
docs/infra/cicd.md
đ Utilisation¶
DĂ©clencheurs automatiques¶
Le pipeline s'exécute automatiquement sur :
| ĂvĂ©nement | Stage | Jobs |
|---|---|---|
Push main/develop | test | integration-tests |
| Merge Request | test | integration-tests |
| Pipeline Schedule (quotidien) | test | integration-tests |
| Exécution manuelle | test | integration-tests |
| Tag (release) | test, deploy, verify | pre-deployment-tests, deploy-api, post-deployment-tests |
ExĂ©cution manuelle¶
CI/CD â Pipelines â Run pipeline
- Sélectionner la branche
- (Optionnel) Ajouter des variables
- Run pipeline
ExĂ©cution d'un job spĂ©cifique¶
Dans une pipeline en cours : 1. Cliquer sur le job 2. Retry ou Play (pour les jobs manuels)
đ RĂ©sultats¶
Visualiser les pipelines¶
CI/CD â Pipelines
- â Status de chaque stage
- đ DurĂ©e d'exĂ©cution
- đ Logs dĂ©taillĂ©s par job
Artifacts (Rapports de tests)¶
Dans chaque pipeline : 1. Cliquer sur le job integration-tests 2. Browse dans la section Artifacts 3. Télécharger les rapports HTML
Rétention : 30 jours
Metrics dans Grafana¶
AprÚs chaque exécution : - Dashboard : http://51.68.126.160:3001/d/integration-tests - Prometheus : http://51.68.126.160:9090
đ Workflow des jobs¶
Job : integration-tests¶
Stage : test Trigger : Push, MR, Schedule, Manuel
1. Configuration SSH
2. Connexion au serveur DEV
3. Exécution des tests
4. Téléchargement des rapports
5. Vérification des métriques Prometheus
6. Validation success rate â„ 95%
Artifacts : Rapports HTML et texte (30 jours)
Job : pre-deployment-tests¶
Stage : test Trigger : Tag, Manuel
1. Exécution des tests complets
2. Vérification success rate ℠95%
3. Bloque le déploiement si échec
Job : deploy-api¶
Stage : deploy Trigger : Tag, Manuel Needs : pre-deployment-tests (optionnel)
Job : post-deployment-tests¶
Stage : verify Trigger : AprĂšs deploy-api
Job : notify-failure¶
Stage : .post Trigger : En cas d'échec du pipeline
Envoie une notification Slack avec : - Projet - Branche - Commit - Lien vers le pipeline - Lien vers le dashboard Grafana
đŻ Workflow de dĂ©ploiement complet¶
DĂ©ploiement standard (via tag)¶
# 1. Créer un tag
git tag -a v1.0.0 -m "Release v1.0.0"
git push origin v1.0.0
# Le pipeline s'exécute automatiquement :
# Stage 1 (test) : pre-deployment-tests
# Stage 2 (deploy) : deploy-api
# Stage 3 (verify) : post-deployment-tests
DĂ©ploiement manuel¶
CI/CD â Pipelines â Run pipeline
- Sélectionner la branche
- (Optionnel) Ajouter variable :
CI_PIPELINE_SOURCE=web - Run pipeline
- Le job
deploy-apiest en modemanual - Cliquer sur Play pour déployer
đĄïž SĂ©curitĂ©¶
Variables protĂ©gĂ©es¶
Les variables SSH_PRIVATE_KEY et SLACK_WEBHOOK_URL sont : - â
Protected : Utilisables uniquement sur branches/tags protĂ©gĂ©s - â
Masked : Jamais affichées dans les logs
Branches protĂ©gĂ©es¶
Recommandation : Settings â Repository â Protected branches
main: Protecteddevelop: Protected- Allowed to merge : Maintainers
- Allowed to push : No one
đ Monitoring¶
Success Rate¶
Le pipeline valide automatiquement : - â Success rate â„ 95% - â DurĂ©e †10 minutes - â Aucun test Ă©chouĂ©
Si validation Ă©choue â Pipeline FAILED â
Dashboard Grafana¶
9 panneaux : 1. Success Rate (gauge) 2. Tests Passed vs Failed (stats) 3. Last Test Run (timestamp) 4. Success Rate by Suite (bar gauge) 5. Duration by Suite (bar gauge) 6. Success Rate Trend (time series) 7. Tests Passed Over Time (time series) 8. Test Duration Trend (time series) 9. Detailed Metrics (table)
đ Troubleshooting¶
Erreur : "Permission denied (publickey)"¶
Cause : Clé SSH mal configurée
Solution : 1. Vérifier la variable SSH_PRIVATE_KEY dans GitLab 2. S'assurer qu'elle contient la clé privée complÚte 3. Vérifier que la clé publique est sur le serveur :
Erreur : "Runner not found"¶
Cause : Aucun runner avec le tag demandé (ovh-docker ou ovh-shell)
Solution :
- VĂ©rifier les runners sur GitLab : Settings â CI/CD â Runners
- Exécuter le playbook Ansible pour configurer les runners
- Vérifier que les tags sont corrects :
ovh-dockerpour les jobs Dockerovh-shellpour les jobs SSH/Ansible
Erreur : "Tests failed"¶
Cause : Tests réellement échoués ou infrastructure cassée
Solution : 1. Voir les logs du job dans GitLab 2. Télécharger les artifacts (rapports HTML) 3. Consulter Grafana : http://51.68.126.160:3001/d/integration-tests 4. Se connecter au serveur et exécuter manuellement :
Pipeline bloquĂ© sur "Pending"¶
Cause : Runner occupé ou inactif
Solution : 1. VĂ©rifier l'Ă©tat du runner : Settings â CI/CD â Runners 2. RedĂ©marrer le runner si nĂ©cessaire 3. Augmenter le concurrent du runner
đ Ressources¶
| Document | Description |
|---|---|
.gitlab-ci.yml | Configuration du pipeline |
docs/CICD_INTEGRATION.md | Guide complet CI/CD |
CICD_SUMMARY.md | Résumé rapide |
deploy_with_tests.yml | Playbook de déploiement |
â Checklist de configuration¶
- Variable
SSH_PRIVATE_KEYconfigurée (Type: File, Protected, Masked) - Variable
SONAR_TOKENconfigurée (Protected, Masked) - Variable
SLACK_WEBHOOK_URLconfigurée (optionnel) - Pipeline Schedule créé (quotidien 2h)
- Runner
ovh-dockerdisponible et actif - Runner
ovh-shelldisponible et actif - Runner
ovh-internetdisponible et actif - Branches
mainetdevelopprotégées (recommandé) -
.gitlab-ci.ymlcommitté et pushé - PremiÚre exécution manuelle testée
- Artifacts vérifiés (rapports HTML)
- Dashboard Grafana accessible
- Métriques Prometheus visibles
- Notification Slack testée (si configuré)
đ PrĂȘt Ă l'emploi¶
Votre pipeline GitLab CI est maintenant configuré !
Prochaines étapes : 1. Pusher un commit sur main ou develop 2. Vérifier que le pipeline s'exécute 3. Consulter les résultats dans Grafana 4. Configurer le schedule quotidien 5. Tester un déploiement avec tag
Monitoring : - đ GitLab Pipelines : Votre projet â CI/CD â Pipelines - đ Grafana : http://51.68.126.160:3001/d/integration-tests - đ Prometheus : http://51.68.126.160:9090
Temps de configuration : 10 minutes Status : â PrĂȘt Ă l'emploi