Aller au contenu principal

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).

remarque

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 script drupal-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-dump a 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.
attention

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 variableContenuExempleRemarque
SSH_CHAINChaine de connexion SSHssh user@serveur
SSH_PRIVATE_KEYClé ssh privée pour se connecter au serveurComment générer une clé ssh
PROJECT_ROOTChemin relatif ou absolu vers la racine du projet~/public_html
DB_PATHDossier relatif à la racine du projet devant contenir les dumpsfiles/dumpscréé au besoin
PROJECT_URLUrl du site pour créer le dumpmonsite.com
DRUSH_BINChemin relatif à la racine du projet vers le binaire drushvendor/bin/drush
DRUSH_ALIASAlias drush ou paramètres supplémentaires, découpés comme par un shell@monsitene pas le définir si inutile ; guillemets retirés depuis 0.4.35
DISABLE_PREPROD_DUMP_ON_DEPLOYDésactivation des dump lors du déploiement en preprod1par défaut à 0
DISABLE_PROD_DUMP_ON_DEPLOYDésactivation des dump lors du déploiement en prod1par 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.