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.patchenregistré dansDIFFS_PATH; - fichiers non versionnés (config présente en base mais absente du dépôt) : archive
<date>-config.tar.gzenregistrée dansDIFFS_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 variable | Contenu | Exemple | Remarque |
|---|---|---|---|
| DIFFS_PATH | Dossier relatif à la racine du projet devant contenir les patchs générés par le diff | files/diffs | créé au besoin |
| DRUSH_ALIAS | Alias drush ou paramètre supplémentaire si nécessaire | @monsite | ne pas le définir si inutile |
| DRUSH_BIN | Chemin relatif à la racine du projet vers le binaire drush | vendor/bin/drush | |
| DRUPAL_CONFIG_PATH | Chemin relatif à la racine du projet vers le dossier de config sync | config/sync | par défaut à config/sync |
| PROJECT_ROOT | Chemin relatif ou absolu vers la racine du projet | ~/public_html | |
| SSH_CHAIN | Chaine de connexion SSH | ssh 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.