Backup
Jobs permettant de faire des backups de la base de données via drush, avant chaque déploiement (prod:backup sur un tag, preprod:backup sur la branche PREPROD_BRANCH).
preprod:backup n'était jamais lancé entre les versions 0.4.6 et 0.4.28 (règle mal écrite). Il l'est de nouveau depuis 0.4.29 : le dossier DB_PATH est créé au besoin, et DISABLE_PREPROD_DUMP_ON_DEPLOY: "1" le désactive.
Fonctionnement
- Commande :
drush sql-dump | gzip -9, lancée sur le serveur par le scriptdrupal-backup.sh. - Nom du dump :
<DB_PATH>/<date>-<PROJECT_URL>-<environnement>.sql.gz. Le dossier est créé au besoin. - Contrôle (depuis 0.4.32) : le dump est écrit dans un fichier temporaire et n'est gardé que si
drush sql-dumpa réussi et que le fichier est une archive gzip valide et non vide. Sinon le job échoue et ne laisse aucun fichier : le déploiement ne part pas sans sauvegarde.
Jusqu'à la version 0.4.31, un drush sql-dump en échec (base injoignable, drush cassé, alias faux) laissait le job en succès, avec un dump de quelques octets. Les sauvegardes planifiées (scheduled-backup) étaient concernées de la même façon.
Utilisation
variables:
CI_TEMPLATE_VERSION: &CI_TEMPLATE_VERSION main
DB_PATH: 'files/dumps'
include:
- project: kgaut/gitlab-ci-templates
ref: *CI_TEMPLATE_VERSION
file:
- '/templates/generic/stages-variables-extends.yml'
- '/templates/drupal/backup.yml'
Le dossier DB_PATH doit être ignoré par git s'il se trouve dans le d épôt, et inaccessible par le web.
Variables nécessaires
| Nom de la variable | Contenu | Exemple | Remarque |
|---|---|---|---|
| SSH_CHAIN | Chaine de connexion SSH | ssh user@serveur | |
| SSH_PRIVATE_KEY | Clé ssh privée pour se connecter au serveur | Comment générer une clé ssh | |
| PROJECT_ROOT | Chemin relatif ou absolu vers la racine du projet | ~/public_html | |
| DB_PATH | Dossier relatif à la racine du projet devant contenir les dumps | files/dumps | créé au besoin |
| PROJECT_URL | Url du site pour créer le dump | monsite.com | |
| DRUSH_BIN | Chemin relatif à la racine du projet vers le binaire drush | vendor/bin/drush | |
| DRUSH_ALIAS | Alias drush ou paramètres supplémentaires, découpés comme par un shell | @monsite | ne pas le définir si inutile ; guillemets retirés depuis 0.4.35 |
| DISABLE_PREPROD_DUMP_ON_DEPLOY | Désactivation des dump lors du déploiement en preprod | 1 | par défaut à 0 |
| DISABLE_PROD_DUMP_ON_DEPLOY | Désactivation des dump lors du déploiement en prod | 1 | par défaut à 0 |
Liste des jobs
prod:backup
Sauvegarde la base de production avant le déploiement d'un tag
preprod:backup
Sauvegarde la base de préproduction avant le déploiement de la branche PREPROD_BRANCH
Les dumps ne sont jamais supprimés par ces jobs : prévoir le nettoyage des vieux dumps.