Integration et deploiement continu
Avec Travis
-
Présentation de Travis
-
Configuration / ProTips
-
Déploiement continu
-
Avantages / Inconvénients
Pourquoi ?
Risque
Confiance
Temps
Stratégie
Bugs
Qualité
Engagement
Nouvelles Fonctionnalités
Devops
.travis.yml
.travis.yml
branches:
only:
- master
- /^deploy-.*$/
branches:
except:
- /^test-.*$/
Travis LifeCycle
- Clone repo, move to folder, checkout commit
-
before_install & install
-
before_script & script
-
after_success ou after_failure
- after_script
Accès SSH
cp devops/travis/.travis-composer-config.json ~/.composer/config.json
- base64 encode private key => source_key (deprecated)
- travis sshkey --upload ~/.ssh/id_rsa -r repository
Bases de donnée ?
- installation de mysql
- démarrage du service
- configuration du user
- utilisation du user dans Symfony2
Notifications
-
notifications:
email:
- my-project-dev@theodo.fr
-
Intégration avec d'autres services (API) :
irc, campfire, slack...
.travis.yml
Astuces
-
cache:
directories:
- ~/.composer/cache
(pas vendor à cause de l'autoload !!)
-
Travis webLint
http://lint.travis-ci.org
-
Scripts par défaut
- Bien faire attention au YML
Accélérer les builds ?
env:
- TEST_FOLDER = src/Bundle/A
- TEST_FOLDER = src/Bundle/B
script: phpunit -c app TEST_FOLDER
env:
- TEST_TAG = units
- TEST_TAG = functionnals
script: phpunit -c app --tags=TEST_TAG
Déploiement continu
- gem install travis
- travis login --pro
- travis encrypt-file
1. Transmettre la clé
openssl aes-256-cbc
-K $encrypted_0a6446eb3ae3_key
-iv $encrypted_0a6446eb3ae3_key
-in super_secret.txt.enc -out
super_secret.txt -d
Encoder (en local)
Décoder (sur la vm travis)
Déploiement continu
after_success:
- openssl ...
- bundle install
- [[ $TRAVIS_BRANCH = 'master' ]] && bundle exec cap deploy
2. Deployer sur le serveur
Avantages
- Simple à mettre en place
- Lisible
- Cloud
- Nouvelles fonctionnalités
- Intégration autres services
- Imperméable par projet
Inconvenients
- Push & debug
- env dev != env test
- Ne teste pas le provisionning
- UI = console
- 3 endroits de configuration ?
Conclusion
Liens
Git submodules
- Auto si .gitmodules
- git:
- submodules: false
- before_install:
- git submodule update --init --recursive
Intégration et déploiement continu avec Travis
By Reynald Mandel
Intégration et déploiement continu avec Travis
- 1,601