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,775