Pythontr

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.


 Jenkins SSH
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.


 Jenkins Configure System

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.


 Jenkins Validation Add on Build Paramaters

Aşağıdaki ekranda ise düzenli ifade kullanarak build parametrelerimizi şekillendirebiliriz.


 Jenkins Validation String Paramaters
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 Source Code Management

Jenkins Build Environment


Artık sunucularımıza dağıtım işlemine başlayabiliriz
 Jenkins Build Environment

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


 Jenkins Build