Example de fichier .gitlab-ci.yml

Je vous partage en exemple, mon fichier gitlab-ci.yml qui content 3 jobs

1) test_build

Le job test_build se lance uniquement sur ma branche de dev, Il me permet de vérifier que tout ce que j'ai poussé, fonctionnera lors du passage en production. Il va récupérer la base de production (restore.sh), faire un composer install + drush cim + drush updb (update.sh).
Dans cette étape, on pourrait lancer également les tests unitaires. (je n'ai pas de module custom, donc inutile dans mon cas).
Il est exécuté dans une image docker-compose, ce qui me permet de lancer la même stack que celle de prod sur le runner gitlab (runner-1).

2) job_integ_delivery

le job job_integ_delivery va mettre à jour mon serveur de test en se basant sur ma base de production.
Il est exécuté dans une image alpline pour exécuter les commandes ssh sur le serveur distant.

3) job_prod_delivery

le job_prod_delivery va mettre à jours mon environnement de production.

  1. stages:
  2.   - build
  3.   - deploy
  4.  
  5. before_script:
  6.   - apk --update add openssh-client bash rsync
  7.   - eval $(ssh-agent -s)
  8.   - echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add -
  9.   - mkdir -p ~/.ssh
  10.   - chmod 700 ~/.ssh
  11.   - '[[ -f /.dockerenv ]] && echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config'
  12.  
  13. services:
  14.   - docker:dind
  15.  
  16. variables:
  17.   DOCKER_DRIVER: overlay
  18.  
  19. test_build:
  20.   stage: build
  21.   image: docker/compose:latest
  22.   tags:
  23.     - runner-1
  24.   script:
  25.     - echo -n $CI_JOB_TOKEN | docker login -u gitlab-ci-token --password-stdin $CI_REGISTRY
  26.     - bash scripts/init.sh dev
  27.     - docker-compose up -d
  28.     - docker-compose exec -T web composer install
  29.     - bash scripts/restore.sh
  30.     - docker-compose exec -T web bash ./scripts/update.sh
  31.   only:
  32.     refs:
  33.       - dev
  34.  
  35. job_integ_delivery:
  36.   stage: deploy
  37.   image: alpine:latest
  38.   tags:
  39.     - runner-1
  40.   script:
  41.     - ssh docker@dockervm "cd /var/data/famillewallon-test && git checkout test && git pull"
  42.     - ssh docker@dockervm "cd /var/data/famillewallon-test && ./scripts/restore.sh"
  43.     - ssh docker@dockervm "cd /var/data/famillewallon-test && docker-compose exec -T web bash ./scripts/update.sh"
  44.   only:
  45.     refs:
  46.       - test
  47.  
  48. job_prod_delivery:
  49.   stage: deploy
  50.   image: alpine:latest
  51.   tags:
  52.     - runner-1
  53.   script:
  54.     - ssh docker@prodsrv "cd /home/docker/data/famillewallon && git checkout master && git pull"
  55.     - ssh docker@prodsrv "cd /home/docker/data/famillewallon && docker-compose exec -T web bash ./scripts/update.sh"
  56.   only:
  57.     refs:
  58.       - master
  59.   when: manual
gitlab

Ajouter un commentaire

Image CAPTCHA
Saisir les caractères affichés dans l'image.