09/06/2017 - CAPISTRANO, JENKINS
Uygulama iletimi yaparken, develop veya master gibi normal dalları kullanmak yerine, tag kullanırız. Tag hotfix veya release sürümlerini temsil eder. Hotfix ve release sürümleri bitirildiğinde, aynı anda her ikiside hem develop hem de master dalları ile birleştirilirler. Eğer GitHub kütüphaneniz birleştirme işleminden sonra jenkins ile testleri çalıştırmak için ayarlanmışsa, test kayıt listenizde daha önceden çalıştırılmış olan testlerin listesini göreceksiniz. Bu örneğimizde capistrano ile uygulama iletimi yaparken, en son çalıştırılan jenkins testini çalıştıracağız. Örneğimizin çalışma prensibi budur.
Jenkins içinde deployer
isminde bir kullanıcı yaratın. Bunu sadece iletim işlemi için kullanın.
http://jenkins.dev
gidin ve "admin" olarak login olun.deployer
kullanıcısına uygun bir şekilde doldurun. Örnek: deployer:deployer
http://jenkins.dev
gidin ve "developer" olarak login olun.http://jenkins.dev/user/deployer/configure
adresine götürecek.deployer:2ead0d921b125a65ca8cc9d8cb5120b1
Crumb bilgisine ulaşmak için, öncelikle aşağıdaki işi iletim işlemi sırasında çalıştırmanız gerekli. Bunu iletim sırasında yapmamızın tek nedeni, doğru bilgiye ulaşmak içindir çünkü aynı komutu, komut satırında wget
ile çalıştırdığımız zaman farklı bilgi alırız. Bu işlem sadece bir kereye mahsus olduğu için, işlemi bitirdikten sonra silin.
before "deploy:starting", "application:jenkins:build"
namespace :application do
namespace :jenkins do
task :build do
execute "wget -q --auth-no-challenge --user deployer --password deployer --output-document - 'http://jenkins.dev/crumbIssuer/api/xml?xpath=concat(//crumbRequestField,\":\",//crumb)'"
end
end
end
Yukarıdaki iş parçacığı, iletim kodunuza eklenir. Aşağıdaki komut ile crumb bilgisini alabilirsiniz.
$ bundle exec cap staging deploy
00:00 application:jenkins:build
01 wget -q --auth-no-challenge --user deployer --password deployer --output-document - 'http://....
01 Jenkins-Crumb:e290ffa8f41b1c22274b6875efc16b59
✔ 01 deployer@jenkins.dev 0.565s
Yukarıda da gördüğümüz gibi, crumb bilgimiz Jenkins-Crumb:e290ffa8f41b1c22274b6875efc16b59
olarak geçiyor.
Bu iş parçacığı, uygulama iletimi sırasında jenkins testini çalıştırmak için kullanılacak, o nedenle capistrano kodunun kalıcı parçasıdır.
before "deploy:starting", "application:jenkins:build"
namespace :application do
namespace :jenkins do
task :build do
url = "http://deployer:2ead0d921b125a65ca8cc9d8cb5120b1@jenkins.dev/job/Football/build"
crumb = "Jenkins-Crumb:e290ffa8f41b1c22274b6875efc16b59"
suppress = "> /dev/null 2>&1"
execute :curl, "-X POST #{url} -H #{crumb} #{suppress}"
end
end
end
$ bundle exec cap staging deploy
00:00 application:jenkins:build
01 curl -X POST http://deployer:2ead0d921b125a65ca8cc9d8cb5120b1@192.168.99.20:8080/job/.....
✔ 01 deployer@192.168.99.40 0.449s
Eğer jenkins sunucunda tail -f /var/log/jenkins/jenkins.log
komutu ile log takibi yaparsanız, aşağıdakine benzer bir çıktı alırsınız.
Jun 02, 2017 10:14:17 AM hudson.model.Run execute
INFO: Football #17 main build action completed: SUCCESS