Aller au contenu principal

diff-config

Job qui sauvegarde, avant le déploiement, la configuration modifiée en base de données : drush deploy l'écrasera avec celle du dépôt.

Fonctionnement​

Le job lance drush cr puis drush cex -y, et compare le répertoire de config (DRUPAL_CONFIG_PATH) au dépôt :

  • fichiers versionnés modifiés ou supprimés : patch <date>-config.patch enregistré dans DIFFS_PATH ;
  • fichiers non versionnés (config présente en base mais absente du dépôt) : archive <date>-config.tar.gz enregistrée dans DIFFS_PATH. Elle ne contient que ces fichiers.

Une différence ne fait pas échouer le job : il sert à conserver ce que le déploiement va écraser, pas à bloquer. Seule une erreur technique le fait échouer (drush en erreur, dossier de config absent…).

Dans tous les cas, y compris quand le job échoue, le répertoire de config est ensuite restauré à sa version versionnée (git checkout et git clean, limités à DRUPAL_CONFIG_PATH). Un export laissé sur le serveur serait sinon réimporté par le déploiement suivant. Si la restauration échoue, le job échoue et liste les fichiers restants : les nettoyer avant de déployer.

Rapport en artefact​

Le patch et l'archive écrits sur le serveur sont aussi publiés en artefacts du job, dans reports/<DIFFS_PATH>/. Ils sont conservés une semaine, y compris quand le job échoue, et ne sont téléchargeables que par les membres Developer et au-delà (la config peut contenir des secrets).

Utilisation​

variables:
CI_TEMPLATE_VERSION: &CI_TEMPLATE_VERSION main

include:
- project: kgaut/gitlab-ci-templates
ref: *CI_TEMPLATE_VERSION
file:
- '/templates/generic/stages-variables-extends.yml'
- '/templates/drupal/diff-config.yml'

Variables nécessaires​

Nom de la variableContenuExempleRemarque
DIFFS_PATHDossier relatif à la racine du projet devant contenir les patchs générés par le difffiles/diffscréé au besoin
DRUSH_ALIASAlias drush ou paramètre supplémentaire si nécessaire@monsitene pas le définir si inutile
DRUSH_BINChemin relatif à la racine du projet vers le binaire drushvendor/bin/drush
DRUPAL_CONFIG_PATHChemin relatif à la racine du projet vers le dossier de config syncconfig/syncpar défaut à config/sync
PROJECT_ROOTChemin relatif ou absolu vers la racine du projet~/public_html
SSH_CHAINChaine de connexion SSHssh user@serveur

Liste des jobs​

prod:diff:config​

Sauvegarde la configuration modifiée en base en production

preprod:diff:config​

Sauvegarde la configuration modifiée en base en préproduction

Les deux jobs étendent le job caché .diff-config.