web-dev-qa-db-fra.com

Comment combiner Vagrant avec Jenkins pour un environnement d'intégration continue parfait?

Vous avez un projet qui a des exigences logicielles à exécuter (par exemple: une version spécifique d'Apache, une version de PHP, une instance d'une base de données MySQL et quelques autres logiciels).

Vous avez déjà découvert Vagrant , donc votre environnement virtuel est entièrement configuré. Vous pouvez créer des boîtes à partir de vos fichiers de configuration et de vos livres de recettes.

Vous avez également compris les avantages d'un système d'intégration continue tel que Jenkins .

Vous souhaitez maintenant combiner ces deux mondes (Vagrant et Jenkins) pour obtenir l'environnement d'intégration continue parfait. Pour être plus précis, vous ne souhaitez pas installer le logiciel requis par votre projet sur la machine exécutant Jenkins, mais vous souhaitez utiliser l'environnement virtuel fourni par Vagrant pour construire périodiquement votre projet par-dessus. Le logiciel CI (Jenkins) va construire la boîte Vagrant pour vous et construire et tester votre projet par-dessus.

Comment configureriez-vous votre environnement pour y parvenir?

83
Roberto Aloi

c'est une bonne solution pour construire un système, ma suggestion:

  1. Votre jenkins actuel fonctionne en tant que CI maître (probablement démarré par l'utilisateur jenkins)
  2. Créez un autre utilisateur sur la même machine ou une autre machine pour travailler en mode esclave jenkins
    • l'esclave jenkins peut être invoqué depuis le maître jenkins, et il peut utiliser un utilisateur différent comme vagrant qui avait l'autorisation et l'environnement pour vagrant, donc il n'interférera pas avec le serveur maître jenkins d'origine
    • créer votre boîte vagabonde de base, puis elle peut être réutilisée pour accélérer votre déploiement
  3. La plupart des informations d'installation (packages) peuvent être gérées par une marionnette (ou un chef) pour être chargées dans votre boîte vm.

Vous pouvez probablement jeter un œil à veewee , qui peut créer une boîte vagabonde à la volée.

Voici le rendre CI plus facile avec Jenkins CI et Vagrant pour ma ligne directrice pour cette suggestion.

33
Larry Cai

Vous pouvez essayer le Vagrant Plugin for Jenkins qui prend actuellement en charge Jenkins CD 1.532.3

Vous pouvez voir une démo de ce plugin en cours d'exécution sur http://unethicalblogger.com/2012/03/13/vagrant-plugin-in-action.html

12

Personnellement, je suggère d'utiliser Hashicorp Packer pour créer vos boîtes Vagrant pour les développeurs, puis de l'utiliser pour également générer une image Docker ou AWS ou OpenStack que vous pouvez exécuter sur votre système CI. Vagrant est un outil génial, mais les frais généraux des machines virtuelles peuvent être un peu élevés pour un système CI pour les faire tourner constamment de haut en bas, surtout si vous voulez des commentaires très rapides.

Sur un ancien client, nous avons essentiellement démarré les machines Vagrant une fois avec le système, puis exécuté les versions Docker/virtualenv à l'intérieur de ces machines virtuelles et nous les détruisions périodiquement en cas de mise à niveau majeure ou de problème avec l'environnement qui ne se comportait pas correctement.

https://www.packer.io/docs/builders/openstack.html

1
dragon788