0

Jenkins’de yeniyim, bu yüzden dağıtım hakkında bir sorum var. Sitem Docker (otomatik ölçeklendirme) üzerinden Amazon Beanstalk üzerinde çalışıyor. Şu anda 3 çalışan örneği var ve benim PHP uygulamam /var/www'da. Ben git push (varsayarak testi geçer) yaptığınızda ben yapmak istiyorum neYeni PHP kodunu dağıtma ve besteciyi Jenkins aracılığıyla tüm AWS Beanstalk örneklerinde çalıştır?

, ben otomatik olarak yeni bir PHP kodu ile (Beanstalk tarafından başlatılmış) her çalışan EC2 örneklerini güncelleştirmek ve bunun üzerine composer install çalıştırmak istediğiniz olduğunu.

Şu anda sunucuları güncellemek için Jenkins kullanan kişileri gördüğüm komut rsync gibi bir şey ve daha sonra sunucuya ssh composer update çalıştırmak için ssh.

Örnekleri oluşturmama başladığımdan (Beanstalk is) Örneklerimin IP adreslerini bilmiyorum, böylece bunu Jenkins işime koyamıyorum (eğiticiler gibi).

Sorularım: Jenkinks, Amazon Beanstalk tarafından başlatılan halihazırda çalışan örneklerim (ve yeni oluşturulan örnekler) üzerinde bir kod güncelleştirmesi ve composer install'u nasıl tetikleyebilir?

Bunu yapmanın doğru yolu nedir?

cevap

1

Kodlarım ile bunu yapmak için CodePipeline'ı kullanıyorum.

CodePipeline, dağıtımlarınızı denetleyen ücretsiz bir hizmettir ve yalnızca git push'u kullanarak yapıları dağıtır ve uygularız.

Git repo'yu kaynak olarak kullanan bir boru hattı oluşturun. Daha sonra, yapım sağlayıcısının yapım aşaması için "Add Jenkins" i seçin, sunucu URL'sini ve proje adını girin. Beta'nın yanındaki dağıtım sağlayıcısı olarak AWS ElasticBeanstalk'ı seçin, ElasticBeanstalk'ın uygulamanızı istediğiniz ortamı ve ayarladığınız ortamı seçin.

Neler oluyor, CodePipeline'a değişiklikler için git repo'unuzun belirli bir kolunu izlemesini söylüyorsunuz. Değişiklikleri fark ettiğinde, boru hattını yürütmesini istersiniz. CP bir değişiklik gördüğünde github'a gidecektir, kodu alın, paketi oluşturun ve paketi boru hattından geçirin. Yapım aşaması için paketi Jenkins'e iletecek ve Jenkins'in bir şey yapmasına izin verecek. Jenkins başarı mesajını CodePipeline'a gönderdiğinde, CodePipeline boru hattındaki bir sonraki adımı yürütecektir. Bu durumda CodePipeline'a uygulamanızı dağıtmak için ElasticBeanstalk'ı çağırmasını istediğinizi söylüyorsunuz. Bu yüzden paketi ElasticBeanstalk'a aktarıyor ve "işini yap" diyor. Hangi EB yapar.

Artık, kod güncellemelerinizi tetikleyen Jenkins'imiz var ve şimdi tüm durumlarda dağıtımdan sonra composer install'u çalıştırmamız gerekiyor. Bunu .ebextensions dizininde bir .config dosyası oluşturarak yapabilirsiniz. Sunucu ayağa kalktı sonra

#.ebextensions/composer.config 

container_commands: 
    01_first_line: 
    command: cd /var/www 
    02_second_line 
    command: composer install 

konteyner komutu çalıştırır ve uygulama sürümü çıkarılan edildikten sonra, ancak dağıtıldığı için önce: Böyle bir kap komutu yaratacağız. Bir Rubyist olarak, composer install'un dağıtım öncesi, dağıtım sonrası veya önemli değilse, emin değilim. AWS belgelerini, sunucunuzda Linux yazılımını uyarlamak için numaralı telefondan uygun zamanda composer install'u çalıştırmanıza izin verebilirsiniz.

+0

Anlamanızı kolaylaştıdığınız için teşekkür ederiz. Kod boru hattından EB'ye dağıtım ile ilgili üç soru. Bu nasıl olur? S1) Özel bir Docker görüntüsü kullanıyorum (PHP kodlu bir dosya, bir Dockerfile dosyası ve.sitemi EB'ye yerleştirmek için eb uzantıları dir). S2) Çalışan örneklerimi sonlandırıyor ve "git" ibaresi gerçekleştiğinde yeni örneklere başlıyor mu? S3) Bir kesinti var mı? – supersan

+0

Benim için zevk ... Lütfen cevap olarak seçmeyi unutmayın :). Sorularınıza cevaben 1) bir açıklamadır, orada bir soru yok, 2) hayır, EB aynı çalışan örneklerine dağıtıyor, 3) kesinti yok. – hephalump