husonet | Tarih: 06.07.2020
Jenkins Deticated Sunucu Entegrasyonu
Github entegrasyonu ile deticated sunucuların jenkins uygulaması ile entegrasyonu.
Senaryomuz gereği 3 adet load balancer sunucumuz ve bir adet database sunucumuz vardır, projemiz github üzerindedir, amacımız ise github üzerimizdeki projemizin sağlıklı bir şekilde sunucularımıza dağıtılması örneğimizi basit tutmak adına unit test süreçleri ve build süreçleri göz ardı edilmiştir. Jenkins kurulumu için bir önceki yazımızı okuyabilirsiniz.
Gerekli Pluginler
- Publish Over SSH
- Validating String Parameter Plugin
- Git plugin # Default
Pluginlerimizi Manage Jenkins > Manage Plugins > Available kısmından ekleyebilirsiniz.
Sonraki aşamamızda ise ssh keylerimizi oluşturmalıyız. Aşağıdaki kodu konsol üzerinden çalıştıralım.
ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/hozdemir/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/hozdemir/.ssh/id_rsa.
Your public key has been saved in /home/hozdemir/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:hQ/MAhsCd2xEQr1YntgeGXeXhiU3VBf8 hozdemir@pythontr
The key's randomart image is:
+---[RSA 2048]----+
|..o+* ....o. |
| . +o= * . .. |
| .+ O B . . |
| . o * + . |
|+ + . E . E |
|.O O . |
|O B = |
|=* . . |
|=.. . |
+----[SHA256]-----+
Yukarıdaki kodu çalıştırdığımız zaman iki adet dosyamız oluşacak. id_rsa ve id_rsa.pub biri private biri public dosyasıdır. Bu dosyaların public olan kısmını erişim sağlayacağımız sunuculara private olanı ise Jenkins üzerine gireceğiz.
Dosyalarımızı listeleyelim
ls -alh .ssh/
total 20K
drwx------ 2 hozdemir hozdemir 4.0K Jul 7 20:19 .
drwxr-xr-x 33 hozdemir hozdemir 4.0K Jul 7 19:28 ..
-rw------- 1 hozdemir hozdemir 1.8K Jul 7 20:19 id_rsa
-rw-r--r-- 1 hozdemir hozdemir 394 Jul 7 20:19 id_rsa.pub
Listemizde gözüken id_rsa.pub public keyimizi barındıran dosyadır.
Sunucularımıza bu dosya içeriğini kopyalayabiliriz. Bunun için scp konsole komutunu tercih edebilirsiniz. Yayın yapan sunucularınızın hepsi için public keyinizi dağıtmalısınız.
scp -P 4022 ~/.ssh/id_rsa.pub kullanici@10.x.x.1n:/home/kullanici/.ssh/authorized_keys
Not: .ssh klasörünüzün create edildiği varsayılmıştır.
Bağlantı testi için aşağıdaki kod satırını konsol üzerinde kullanabilirsiniz.
ssh -i ~/.ssh/id_rsa kullanici@10.x.x.1n
Bağlantı testlerimizi sınadıktan sonra jenkins üzerinde gerekli pluginlerin kurulumunu yaptıysak yapılandırabiliriz. Jenkis'e login olduktan sonra Manage Jenkins > Configure System kısmına gelelim. Aşağıdaki alanları ekranda gözüktüğü gibi private key "id_rsa" keyimizi girelim.
Artık süreçlerimizi işleteceğimiz kısmı yapılandırabiliriz. Jenkins iconuna tıklayalım ardından menu üzerindeki NEW ITEM seçeneğini tıklayarak açılan sayfaya geçelim. Açılan ekran üzerinden input kısmına bir isim yazalım ardındanda freestyle projects i seçelim ve ok butonuna basalım.
İlk dolduracağımız kısım build edilecek versiyonu zorlamak adına bir formata sokabiliriz. Aşağıdaki ekran görüntüsünü inceleyiniz.
Aşağıdaki ekranda ise düzenli ifade kullanarak build parametrelerimizi şekillendirebiliriz.
Kaynak Kod Yönetimi "Source Code Management"
Bu kısımıda aşağıdaki ekran görüntüsünü inceleyerek doldurabilirsiniz. Github bilgilerinizi ve erişim için Credentials bilgilerini giriş yaparak ve seçerek giriyorsunuz. En önemli kısımlardan biride build parametresini bu kısımda belirtiyoruz.
Jenkins Build Environment
Artık sunucularımıza dağıtım işlemine başlayabiliriz
Jenkins Build
Son olarakta build edilmesi ve konsol üzerinde çalıştıracağımız composer gibi işlemleri yapacağımız kısım olarak bu kısımı değerlendirebileriz. Şimdilik basit bir örnek yapalım ve kaydedelim