Mükemmel Sürekli Entegrasyon Ortamı için Vagrant ile Jenkins nasıl birleştirilir?


86

Çalıştırmak için bazı yazılım gereksinimleri olan bir projeniz var (örneğin: belirli bir Apache sürümü, bir PHP sürümü, bir MySQL veritabanı örneği ve birkaç başka yazılım parçası).

Vagrant'ı zaten keşfettiniz , yani sanal ortamınız hazır. Yapılandırma dosyalarınızdan ve yemek kitaplarınızdan kutular oluşturabilirsiniz.

Ayrıca Jenkins gibi bir Sürekli Entegrasyon sisteminin avantajlarını da anladınız .

Şimdi, mükemmel Sürekli Entegrasyon Ortamını elde etmek için bu iki dünyayı (Vagrant ve Jenkins) birleştirmek istiyorsunuz. Daha spesifik olmak gerekirse, projenizin gerektirdiği SW'yi Jenkins çalıştıran makineye kurmak istemezsiniz, ancak projenizi periyodik olarak bunun üzerine inşa etmek için Vagrant tarafından sağlanan sanal ortamı kullanmak istersiniz. CI yazılımı (Jenkins) sizin için Vagrant kutusunu oluşturacak ve bunun üzerine projenizi oluşturacak ve test edecektir.

Bunu başarmak için ortamınızı nasıl kurarsınız?


4
Ek olarak, Jenkins kurulumunuz bir Vagrant kutusudur, bu nedenle bu CI ortamını, aralarında birçok fark olduğu için birden çok platformda çalıştırabilirsiniz.
Stephan Eggermont

1
Böyle bir ortam yarattın mı? Docker & Jenkins kombinasyonu zaten iyi biliniyor ancak Windows ortamları için yeterli olmayacak, bu durumda tek iyi seçenek olan IMO, Vagrant + Jenkins'tir. Dikkate alınması gereken bazı hususlar var, örneğin gerçekten kölelere ihtiyacımız var mı ve hangi bağlamlarda talep üzerine proje başına serseri bir yapı ortamı oluşturmak için tek bir sunucu kullanabilir miyiz (birçok şirkette sadece birkaç proje sürekli olarak inşa ediliyor, çoğunluk nadiren inşa ediliyor), veya bunu disk ayak izini azaltmak için veri tekilleştirme sisteminin üstünde mi kullanmalıyız.
majkinetor

Yanıtlar:


36

derleme sistemi için iyi bir çözüm, önerim:

  1. Mevcut jenkinleriniz ana CI olarak çalışıyor (muhtemelen kullanıcı jenkins tarafından başlatılmıştır)
  2. Aynı makinede veya başka bir makinede başka bir kullanıcı oluşturarak jenkins bağımlı modu olarak çalışın
    • jenkins slave, jenkins master'dan çağrılabilir ve serseri için izni ve ortamı olan serseri gibi farklı kullanıcıları kullanabilir, bu nedenle orijinal jenkins ana sunucusuna müdahale etmez
    • Temel serseri kutunuzu oluşturun, ardından dağıtımınızı hızlandırmak için yeniden kullanılabilir
  3. Kurulum bilgilerinin (paketlerin) çoğu vm kutunuza yüklenmek üzere kukla (veya şef) tarafından yönetilebilir.

Muhtemelen veewee'ye bir göz atabilirsiniz , bu da anında serseri kutusu yaratabilir.

İşte Jenkins CI ve Vagrant ile yap CI kolay bu öneri için benim kılavuz için.


1
Bağlantınız maalesef kesildi
gogo_gorilla

3
Birinin kopuk bağlantıyla ilgilenmesi durumunda, işte Jenkins CI ve Vagrant ile CI'yi kolaylaştırın
Gilberto Treviño

12

Jenkins için Vagrant Eklentisini deneyebilirsiniz anda Jenkins CD 1.532.3'ü destekleyen Jenkins

Http://unethicalblogger.com/2012/03/13/vagrant-plugin-in-action.html adresinde çalışan bu eklentinin bir demosunu görebilirsiniz.


7
bu eklenti
1.490'ın

köleler üzerinde çalışan serseri de desteklemiyor :(
Christophe Furmaniak

1
Evet, ancak o zaman sanal makinenin tüm yaşam döngüsünü kendiniz halletmeniz gerekir (işin sonunda oluşturun, yok edin veya etmeyin, ...). Eklentinin arkasındaki fikir, eklentinin bunu sizin için yapması ve ardından ana amacınıza odaklanabilmenizdir: izole edilmiş bir kap olarak bir sanal makineyi kullanın.
Christophe Furmaniak

2
Bahsedilen eklentinin hala düzeltilmeyen can sıkıcı sorunları var ( issue.jenkins-ci.org/browse/JENKINS-26326 ) ve geliştirme bir yıl önce durduruldu. Tavsiye etmem.
Ross Ivantsiv

1
Yapıyı yapmak için talep üzerine serseri örneği çalıştırmak, yapılacak doğru şey gibi görünüyor. Bu eklenti hala çalışmıyorsa?
Atifm

1

Kişisel olarak, geliştiriciler için Vagrant kutularınızı oluşturmak için Hashicorp Packer'ı kullanmanızı ve ardından CI sisteminizde çalıştırabileceğiniz bir Docker veya AWS veya OpenStack görüntüsü çıkarmak için kullanmayı öneririm. Vagrant harika bir araçtır, ancak bir CI sisteminin, özellikle gerçekten hızlı geri bildirim istiyorsanız, onları sürekli olarak yukarı ve aşağı döndürmesi için sanal makinelerin ek yükü biraz yüksek olabilir.

Eski bir istemcide, temelde Vagrant makinelerini sistemle bir kez başlattık ve ardından bu VM'lerin içinde Docker / virtualenv yapılarını çalıştırdık ve büyük bir yükseltme veya ortamla ilgili doğru davranmayan bir sorun olduğunda bunları periyodik olarak yok ettik.

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


Sorabilirsem, jenkins'i ayrı bir kullanıcı olarak çalıştırdınız mı? Eğer öyleyse, serseriye erişim sağlamayı nasıl başardınız? Teşekkürler
Jaswanth Manigundan

Vagrant normal olarak kurulduğu sürece sistem yoluna yerleştirilir. Kutuların kendileri normal olarak geçerli kullanıcının ana dizinine yüklenir, ancak serseri evi bir ortam değişkeniyle geçersiz kılabilirsiniz. Tüm bunları bir araya getirdik ve kutuyu, bir kez önbelleğe alınıp daha sonra yeniden kullanılabilmesi için oluşturma sürecinin belirli bir sürüm parçasıyla çekerek yaptık.
dragon788
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.