Aller au contenu principal

Pourquoi ce projet ?

Factorisation de jobs Gitlab CI afin de mettre facilement et rapidement une pipeline en place pour un projet existant : sauvegarde, contrôles, déploiement par SSH, qualité du code.

Les jobs s'incluent depuis le projet kgaut/gitlab-ci-templates, à une version précise. Ce projet doit donc exister, en public, sur l'instance GitLab qui exécute vos pipelines (pourquoi).

Kickstart​

Pour un Drupal, voici un exemple à mettre en place en deux minutes.

.gitlab-ci.yml​

variables:
CI_TEMPLATE_VERSION: &CI_TEMPLATE_VERSION 0.4.32 # Dernière version : onglet « Tags » du projet kgaut/gitlab-ci-templates
PATH_TO_THEME: "./web/themes/custom/mon_theme"
ASSETS_IMAGE: "registry.gitlab.com/kgaut/docker-node-images:19"
ASSETS_ARTEFACTS: "./web/themes/custom/mon_theme/css"
ASSETS_ARTEFACTS_TARGET: "./web/themes/custom/mon_theme"
SENTRY_PROJECT : 'mon-projet'
SENTRY_ORG : 'mon-organisation'
DB_PATH: 'files/dumps'
DIFFS_PATH: 'files/diffs'

include:
- project: kgaut/gitlab-ci-templates
ref: *CI_TEMPLATE_VERSION
file:
- '/templates/generic/stages-variables-extends.yml'
- '/templates/drupal/backup.yml'
- '/templates/drupal/diff-config.yml'
- '/templates/generic/diff-repository.yml'
- '/templates/generic/assets.yml'
- '/templates/drupal/deploy.yml'
- '/templates/generic/sentry.yml'
- '/templates/drupal/post-deploy-clear-cache.yml'
- '/templates/generic/scheduled-clean-dump.yml'
- '/templates/drupal/scheduled-backup.yml'

Le premier fichier, stages-variables-extends.yml, est obligatoire : tous les autres en dépendent. Chaque fichier suivant apporte un ou plusieurs jobs, décrits dans cette documentation : ne gardez que ceux qui vous servent.

Variables Gitlab CI​

Il est préférable de mettre quelques variables en dehors de ce fichier (Settings / CI/CD / Variables), soit parce qu'elles varient selon l'environnement, soit parce qu'elles doivent rester confidentielles.

Par exemple :

Nom de la variableContenuExempleRemarque
PROJECT_URLUrl du site, utilisée dans le nom des dumpsmonsite.compar environnement
PROJECT_ROOTChemin relatif ou absolu vers la racine du projet sur le serveur~/public_htmlpar environnement
SSH_CHAINChaine de connexion SSHssh user@127.0.0.1par environnement
SSH_HOSTIP ou hostname du serveur127.0.0.1par environnement
SSH_USERUtilisateur sshuserpar environnement
SSH_PRIVATE_KEYClé ssh privée pour se connecter au serveurComment générer une clé ssh
SSH_KNOWN_HOSTSClés d'hôte du serveurrecommandé : Clés d'hôte SSH
SENTRY_AUTH_TOKENJeton d'authentification à Sentrymasquée

« Par environnement » : la variable se définit deux fois dans GitLab, avec le périmètre prod puis preprod.

Toutes les variables

Pour un projet Symfony, voir le déploiement Symfony, qui donne un exemple complet.

Et hop...​

Un push sur la branche preprod lancera un déploiement en preprod et un tag de la forme x.y.z lancera un déploiement en prod.

Pour vérifier la mise en place avant le premier déploiement : le job SSH Connexion teste l'accès au serveur sans rien modifier.

Changer de version​

Les nouveautés de chaque version sont listées dans le fichier CHANGELOG.md du projet. Une montée de version se fait en changeant CI_TEMPLATE_VERSION : les templates et les scripts exécutés sur le serveur suivent cette même version.