Kevin Gautreau
Forge à logiciels
Solutions SASS
Gitlab, Github, Bitbucket...
Solutions auto-hébergée
Gitlab, Gitea (Gogs) , USVN...
Continuous Integration => Intégration Continue
Automatiser la procédure de création d'une version à chaque modification de code en s'assurant de ne pas intégrer de nouveaux problèmes (bugs)
Attention : Gitlab utilise déjà ces hooks pour fonctionner, ne pas les modifier ! Utiliser les "custom_hooks"
/var/opt/gitlab/git-data/repositories/kgaut/talk-drupal8-quoi-de-neuf.git/custom_hooks/post-receive
#!/bin/sh
ssh -p 1987 kgaut@atila.kgaut.net 'cd /home/formations_kgaut_net/supports/drupal8/;git pull origin master;'
echo "Over ! "
Plein de trucs : Jenkins, Travis CI, CircleCI, Codeship...
Brique CI, intégrée à Gitlab depuis quelques années.
M serveurs Gitlab <=> N serveurs Gitlab CI.
(généralement M = N, et sur le même serveur...)
De 1 à X sur le même serveur gitlab CI.
De différents type (docker, virtualbox, shell...)
=> Basiquement tout ce qui peut se scripter.
mail:
script: "echo 'coucou' | mail -s 'test email' contact@kgaut.net"
=> envoi d'un mail à chaque commit
mail:
script: "echo 'coucou' | mail -s 'test email' contact@kgaut.net"
mail2:
script: "echo 'coucou' | mail -s 'test email 2' contact+test@kgaut.net"
mail:
script: "echo 'push sur master' | mail -s 'push sur master' contact@kgaut.net"
only:
- master
mail2:
script: "echo 'coucou' | mail -s 'push une branche' contact+test@kgaut.net"
Execution d'une commande ou d'un script à distance
backup:
- ssh kgaut_net@kgaut.net 'drush @kg cr'
- ssh kgaut_net@kgaut.net 'drush @kg sql-dump --gzip > "....sql.gz"'
- ssh kgaut_net@kgaut.net 'bash -s' < scripts/deploy/2-diff.sh
scripts/deploy/2-diff.sh est versionné dans le dépot
Groupement de « jobs ».
Au sein d'un groupement : les jobs sont lancés en //
Si un élément échoue => interuption du process (possible de bypass)
stages :
- predeploy
- deploy
prod_backup_db:
script:
- ssh kgaut_net@kgaut.net 'drush @kg cr'
- ssh kgaut_net@kgaut.net 'drush @kg sql-dump ...'
stage : predeploy
prod_diff_git:
script:
- ssh kgaut_net@kgaut.net 'bash -s' < scripts/deploy/2-diff.sh
stage : predeploy
prod_deploy:
script:
- ssh kgaut_net@kgaut.net 'bash -s' < scripts/deploy/4-deploy.sh
stage : deploy