BiVendor Deployment Süreci

Merhaba, bu makalede BiVendor ismiyle ilk defa karşılaşanlar için BiVendor Nedir? sorusuna cevap bulduktan hemen sonra, BiVendor Deployment sürecinde kullandığımız CI/CD(Continuous Integration ve Continuous Delivery) araçlarından en popülerlerinden biri olan Jenkings hakkında detaylı bilgileri bulabileceksiniz.

BiVendor Nedir?

Online pazar yerlerinde satış yapan satıcıların iş akış süreçlerini tek bir panelden kolayca yönetilmesini sağlayan bir uygulamadır. BiVendor hakkında daha detaylı bilgiye bu link üzerinden erişebilirsiniz.

Jenkins Nedir?

Jenkins Mimarisi

Java dili ile geliştirilmiş Continuous Integration CI (Sürekli Entegrasyon) için yazılmış açık kaynak kodlu otomasyon aracıdır. Resimde görüldüğü gibi kısaca local ortamda yazılmış kodun commit edildikten sonra herhangi bir git versiyon kontrol sistemine(GitLab,GitHub,Bitbucket vs.) gönderilip buradan son halini çekerek Deploy, Build ve test işlemlerinin otomatik bir şekilde gerçekleşmesi sağlar. Eğer proje build olurken hata ile karşılaşıyorsa bu hatanın hangi sebepten dolayı olduğu bilgisini göstererek geliştiricilerin bundan haberdar olmasını sağlar.


Jenkins Kurulumu

Bu yazıda Jenkins’in windows işletim sisteminde nasıl kurulum yapılacağı adım adım gösterilecektir. Diğer platformlarda nasıl yükleneceği bilgisine ise resmi sitesinden erişebilirsiniz.

Ön koşullar

Jenkins’i windows bir makineye yüklemeden önce bazı yazılımsal ve donanımsal gereksinimler bulunmaktadır.

Donanımsal Gereksinimler:

Minimum 256 MB Ram gereklidir.

Sabit sürücünüzde en az 1 GB alana ihtiyaç bulunmaktadır.

Yazılımsal Gereksinimler:

Jenkins, Java üzerinde çalıştığı için, Java’nın yüklü olması gerekmektedir. Eğer Java yüklü değilse Jenkings kurulumu yapılamaz. Resmi sitesindeki Java gereksinimleri şu şekildedir. (link üzerinden orijinal haline erişebilirsiniz.)

Modern Jenkins sürümleri aşağıdaki Java gereksinimlerine sahiptir:

Java 8 çalışma zamanı ortamları, hem 32 bit hem de 64 bit sürümleri desteklenir.

Jenkins 2.164 ve 2.164.1 2’den beri Java 11 çalışma zamanı ortamları desteklenmektedir.

Jenkins’in Java 11 ile çalıştırılması burada belgelenmiştir.

Jenkins’te Java 8’den Java 11’e yükseltme yaparken alınması gereken bazı önlemler vardır: lütfen bu yönergeleri izleyin.

Eski Java sürümleri desteklenmez.

Java 9 ve Java 10 desteklenmez.

Java 12 desteklenmez.

Java 13 desteklenmez.

Windows makinede Java versiyon bilgisini en kısa yoldan öğrenmek için bu linke (Chrome harici bir tarayıcı desteklemektedir) tıklayabilirsiniz.

Java Versiyon Linki Ekran Görüntüsü

Bu kontrolleri yaptıktan sonra Jenkins’in kuruluma başlayabiliriz.

Jenkins’in resmi sitesinde bulunan kurulum dosyalarına bu link üzerinden erişebilirsiniz. Bu makalede stable versiyonu olan LTS(Long-Term Support) sürümünün windows makineye kurulumu aşamaları anlatılacaktır.

LTS(Long-Term Support) Versiyonu

İndirme tamamlandıktan sonra jenkins.msi uzantılı dosya çalıştırıldığında yükleme adımları toplam 5 adım ile sırasıyla şu şekilde olacaktır:

Adım 1:

Adım 2:

Burada Jenkins’in nereye kurulacağı adımı yer almaktadır. Jenkins varsayılan olarak 64 Bit olan makinede C:\Program Files\Jenkins\ klasör yoluna yükleme yapar. 32 Bit için ise varsayılan yükleme yeri C:\Program Files (x86)\Jenkins\ şeklindedir. Burada değişiklik yapmadan devam edebilirsiniz.

64 Bit Varsayılan Yükleme Adresi

Adım 3:

Logon Type seçeneğini önerilen seçenek olan Run service as local or domain user seçildikten sonra Account ve Password değerleri girilmesi gerekmektedir. Burada dikkat edilmesi gereken girilecek olan bu iki değerin Windows’a giriş yapılan kullanıcı adı ve şifre değerlerinin olmasıdır.

Account: Tam Kullanıcı İsmi (Komut Satırına whoami yazdığınızda çıkan ismin tümünü kopyalamanız gerekmektedir).

whoami komut satırı çıktısı

Password: Oturum açtığınız kullanıcı şifresi. (Eğer windowsa girişte 4 haneli PIN kullanılıyorsa bu değeri kabul etmemektedir. Bu sebepten parola değeri girilmesi gerekmektedir.)

Kullanıcı adı ve şifre girildikten sonra Test Credentials butonuna basıp girilen değerlerin kontrolü sağlanır. Eğer bu bilgiler doğruysa ileri diyerek port seçim adımına geçebiliriz.

Önemli Not

Test Credentials butonuna tıkladıktan sonra “This account either does not have the privilege to logon as a service…” şeklinde başlayan bir hata mesajı ile karşılaşırsanız giriş yapılan kullanıcıya yetki vermeniz gerekmektedir.

Bu adımları takip ederek kolaylıkla oturum açılan kullanıcıya yetki verebilirsiniz.

Windows aramaya Yönetimsel Araçlar yazarak ilgili ekrana girin.

Yönetimsel Araçlar ekranında Yerel Güvenlik dosyasını açın.

Yerel İlkeler altında Kullanıcı Hakları Atamasına tıklayın.

Sağ bölümde yer alan Hizmet olarak oturum aça çift tıklayın.

Yeni kullanıcı veya grup seçeneğine tıkladıktan sonra giriş yapılan kullanıcı seçilip yetki verildikten sonra uygula yapılır ve yetki verilerek bu sorun giderilmesi sağlanır. Kaynak Link

Adım 4:

Jenkins servisinin çalışacağı port numarası seçim ekranıdır. Varsayılan olarak 8080 port numarasını seçerek ilerleyebilirsiniz. Eğer ilgili port numarası dolu ise farklı bir port numarası girilebilir.

Adım 5:

Son adımda Windows makinede Javanın yüklü olduğu klasör seçilerek yükleme işleminin bitmesi beklenir.

Kurulum tamamlandıktan sonra eğer yükleme adımında varsayılan port bilgisi değiştirilmediyse http://localhost:8080/ url adresine yönlendirilmesi otomatik sağlanacaktır.

Tarayıcıda ilgili url açıldıktan sonra Jenkings arayüzünün gelmesi biraz vakit alabilir bu sebepten biraz bekledikten sonra yönetici şifre ekranı gelmektedir.

Önemli Not

Jenkins yükleme işlemi tamamlandığında eğer tarayıcıda üsteki ekran görüntüsü gelmiyorsa Windows aramaya Servisler yazdıktan sonra Jenkins servis durumunun çalışıyor durumunda olup olmadığı kontrol edilmelidir. Servis çalışmıyorsa durum bilgisi boş gözükecektir.

Jenkins servisinin başarılı bir şekilde çalıştığı durum bilgisi

Servisin çalışmadığı durumda Jenkins’in yüklü olduğu yerdeki log dosyası açılıp C:\Program Files\Jenkins\jenkins.err.log.txt hatanın sebebine göre aksiyon alınmalıdır. Aşağıdaki örnek hata mesajında belirtildiği gibi Java versiyonunun 8 veya 11 olması gerektiği mevcut versiyonun 13 olduğu bu sebepten dolayı başlatamadığı uyarsı bulunmaktadır.

Java desteklenmeyen versiyon hatası

Böyle bir sorunla karşılaşıldığında mevcut windows yüklü makineye java 8 veya 11 versiyonlarını yüklendikten sonra Jenkins’in yüklü olduğu yerde bulunan jenkins.xml C:\Program Files\Jenkins\jenkins.xml dosyasında desteklenen Java’nın yüklü olduğu yer belirtilmelidir. Servisler bölümünde Jenkings servisini tekrar başlattığınızda durumunu çalışıyor olarak düzelecektir.

Jenkins’in kilidini açmak için, ekranda belirtilen konumundaki dosyadan şifreyi kopyalayın ve Yönetici şifresi alanına yapıştırın. Ardından, “Devam Et” butonuna tıklayın.

Şifreyi girdikten sonra Jenkins plugin yükleme ekranı gelmektedir. Bu adımda önerilen pluginleri yüklemeyi seçerek ilerleyelim. Daha sonrasında gerekli olan pluginleri Jenkins arayüzü üzerinden rahatlıkla yükleyebilmekteyiz.

Varsayılan pluginler yüklendikten sonra giriş yapılacak kullanıcı adı ve şifresi belirlenir ve yükleme ekranı tamamlandıktan sonra artık Jenkins kullanıma hazır durumdadır.

Jenkins’in kurulumunu tamamladık. Şimdi basit bir .Net Core projesi ile build ve deploy işlemleri nasıl otomatik hale getirilir ondan bahsedelim.

Önemli Not

Jenkins’te yeni işler oluşturmadan önce windows yüklü makinenizde Git ve MS Build yüklenmesi ve Jenkins üzerinden bu yüklü yolların belirtilmesi gerekmektedir. Bunun sebebi projenin derlenebilmesi ve Git üzerinden SSH Key ile projenin son haline erişebilmesi içindir.

Git indirme linki. Jenkins üzerinden git.exe dosyasının yüklü olduğu yolun doğru olduğunu kontrol ediniz sonrasında build ederken hata ile karşılaşabiliniyor. Bunun için Jenkins’i Yönet> Global Tool Configuration >Git Path to Git executable alanının kontrol edilmesi gerekmektedir.

MS Build için Microsoft’un resmi sitesinden projenin hangi versiyonu build edilecekse onun SDK si indirilmesi gerekmektedir. Bu link üzerinden seçim yaparak indirebilirsiniz. Eğer .NET Framework versiyonlu bir projenin derlenmesi gerekiyorsa bunun için bu ayarın yapılması gerekmektedir. .Net Core versiyonunda dotnet build satırı bu işlemi otomatik olarak yaptığı için bu ayara gerek yoktur. Jenkings üzerinden MS Build eklentisinin yüklü olduğundan emin olunuz. Eğer yüklü değilse Jenkingsi Yönet>Eklentileri Yönet>Kullanılabilir sekmesinden “MS Build” yazarak yükleyebilirsiniz. Bu eklentiyi yükledikten sonra Jenkins’i Yönet> Global Tool Configuration>MsBuild sekmesinden windows’ta yüklü msbuild.exe yolu verilmesi gerekmektedir. Bu .Net Core projeleri için gerekli değildir.

Örnek Proje İle Jenkins Ayaları Nasıl Yapılır?

Yeni Item seçeneğini seçtikten sonra istediğimiz ismi tanımlayıp Serbest-stil yazılım projesi yapılandır seçeneğini seçiyoruz. Burada birçok farklı seçenek bulunmaktadır. Pipeline olarak da itemimizi oluşturabiliriz fakat bu makalede BiVendor projesindeki gibi deploy örneğinin anlatımı yapıldığından dolayı ilk seçeneği seçip isim verdikten sonra butona basıp bir sonraki ekrana geçelim.

GitHub üzerinden örnek olarak yeni bir repository oluşturularak basit bir Hello World çıktısı veren .Net Core projesi SSH url GitHub linkini kopyalayıp Git seçeneği seçtikten sonra SSH Key bilgilerini oluşturduktan sonra GitHub üzerinden Jenkins ile arasındaki bağlantıyı sağlamış oluyoruz.

Örnek GitHub SSH Repository Url Linki

Repository URL bilgisini yapıştırıktan sonra ilgili projenin hangi Branch’ini çekmek istediğimizi belirtiyoruz.

Eğer SSH key oluşturulmadıysa Git Gui programını açarak yeni oluşturulabilir. (Repository URL olarak eklediğiniz projenin git versiyon kontrol sisteminde GitHub,GitLab vs. SSH Key’in localinizde bulunan SSH key olacağı bilgisi unutulmamalıdır.)

Yeni SSH oluşturma ekranı

Yeni Credentials ekranında SSH Username with private key seçeneğini seçip resimdeki gibi doldurulması yeterli olacaktır.

Örnek Yeni SSH Key Oluşturma Adımı

Bu işlemlerden sonra Yapılandırma adımında Windows bath ve PowerShell komutlarıyla projenin build olması deploy klasörünün IIS’te belirtiğimiz yola kopyalanması gibi ayarları yaptıktan sonra işlemlerimiz tamamlanmış olacaktır.

Yapılandırma seçeneğinde bulunan PowerShell seçeneğini seçip ilk olarak build klasörünü temizleme shell komutunu ekliyoruz. Eğer PowerShell plugin olarak yüklü değilse Jenkingsi Yönet>Eklentileri Yönet>Kullanılabilir sekmesinden “PowerShell” yazarak indirebilirsiniz.

Bu örnekte Jenkins “C:\Program Files (x86)\Jenkins” yolunda yüklü olduğundan dolayı shell komutları bu yola göre yazılmıştır.

İlk yapılandırma adımında Console Output ekranında adımların rahat okunabilmesi açısından ECHO ile ilgili işlem bilgi amaçlı yazılmaktadır.

ECHO Starting Delete Publish Folder 
$source = "C:\Program Files (x86)\Jenkins\workspace\DotnetCoreForJenkins\publish"
If(Test-path $source ) {Remove-item $source -recurse -force }

Jenkinste her eklenen job yüklü olduğu klasöre workspace içinde item oluşturukenki verdiğimiz isim ile oluşmaktadır. Bu işlemi yapılandırma tamamlandıktan sonra ve ilk build işleminde otomatik belirttiğimiz item isminde klasör oluşturarak yapmaktadır. Bu sebeple yazmış olduğumuz shell ve batch komutlarında ilgili klasörler olmamasına dikkat etmeyiniz. İlk buildten sonra otomatik oluşacağı ve Git üzerindeki son halini alarak publish klasörüne yazmış olucağımız dotnet build komut satırı ile build edilip başarılı ise diğer adımlarda publish klasörüne deploy edilmesi sağlanacaktır.

İlk işlem olarak bir önceki publish klasörü silinmesini belirtiyoruz.

Bir sonraki yapılandırma adımı olarak Windows Batch seçip item ismi olarak belirttiğimiz Jenkings’te oluşturduğumuz item isimli otomatik oluşacak klasörün içine cd ile girerek dotnet restore komutunu çalıştıyoruz.

ECHO Starting dotnet restore
cd C:\Program Files (x86)\Jenkins\workspace\DotnetCoreForJenkinsdotnet restore
dotnet restore komutu ile projenin gerekli olan nuget paketlerin yüklenmesi yapılıyor

Projenin başarılı bir şekilde build edilmesi için dotnet build komut satırı çalıştırılması gerekmektedir. Bu satır ile projede küçük bir değişiklik yapıp derlemeden projeyi commitlediğiniz taktirde eğer derlemede hata ile karşılaşılırsa console ekranında bu hatayı bize gösterilmesi sağlanacaktır.

ECHO Starting dotnet build
cd C:\Program Files (x86)\Jenkins\workspace\DotnetCoreForJenkinsdotnet build

Yeni bir windows batch yapılandırma adımı ekleyerek projenin publish ve Debug modda deploy edilmesi için ilgili yolu tanımlıyoruz. dotnet publish komut satırı için ayrıntılı bilgiyi buradan bulabilirsiniz.

ECHO Starting dotnet publish publish/DotnetCoreForJenkins
cd C:\Program Files (x86)\Jenkins\workspace\DotnetCoreForJenkins
dotnet publish --configuration "Debug" CoreConsoleBasicExample/CoreConsoleBasicExample.csproj --output ./../publish/CoreConsoleBasicExample

Son adım olarak publish klasörünü IIS üzerinde belirtmiş olduğumuz dosya yoluna kopyala adımı ile birlikte yapılandırmayı tamamlayalım.

xcopy /y  "C:\Program Files (x86)\Jenkins\workspace\DotnetCoreForJenkins\publish\CoreConsoleBasicExample" D:\inetpub\wwwroot\CoreConsoleBasicExample

Yazmış olduğumuz komutların çalışması için Şimdi Yapılandır butonuna tıklamamız gerekmektedir. Olası bir hatada Yapılandırma Geçmişi altında ilgili buildin içine girerek Console Output üzerinden hata mesajına ulaşabilirsiniz.

Yeni oluşturmuş olduğumuz item için basit bir şekilde nasıl Git üzerinden projeyinin son halini alıp derleyip bizim yazmış olduğumuz bath komutlarıyla otomatik olarak deploy edilmesini sağlamış bulunmaktayız. Basit bir örnek üzerinden en kısa yoldan Jenkins’in ne gibi kolaylıklar sağladığını öğrenmiş olduk. Jenkins birçok plugin ve pipeline desteklediği için farklı birçok yöntem uygulanabilmektedir.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir