Pipeline'ye hakim olabilmemiz için bir kaç terimi de beraberinde bilmemiz gerekiyor.
işlerin ardışık bir sırada yapılması, bir işlemin çıktısının sonraki gelen işlemin girdisi olması anlamına gelmektedir.
Fabrikadaki üretim bantlarını aklımıza getirelim. Üretilen eşya, hattın içerisinde farklı duraklara gelir. Her durakta bir işlem görür ve sonraki aşamaya geçer.
Pipeline içerisinde yer alan fazları ifade eder. Örneğin standart bir yazılım projesinde build -> test -> deploy adımlarından her birisi bir fazı ifade eder.
Stage içerisinde yer alan adımları ifade eder.
Jenkins üzerinde kodumuzun geçtiği aşamaları düşünelim:
Build -> Test -> Deployment
Build (derleme) aşamasını bir evre (stage) olarak düşünelim. Test evresi de sonraki evre. Deployment evresi de en son çalışacak evre olarak düşünelim. Bu işlemler Jenkins üzerinde ardışık bir sırada çalışmaktadır.
Build işlemi hatalı olursa, yani kodumuz derlenmez ise, sonraki evreye geçmeyecektir. Aynı şekilde test safhasında hata oluşursa, deployment işlemi gerçekleşmeyecektir.
Pipeline mantığı bu şekilde çalışmaktadır.
Jenkins Pipeline tanımı JenkinsFile isminde bir dosyaya yazılır.
İki türlü tanımlama şekli var: Declarative, Scripted
Bu iki tür pipeline yazım şeklinden declarative olanı sonradan gelmiş ve daha gelişmiş olanıdır.
Resmi Jenkins dokümanlarında tavsiye edilen yöntem declarative tanımlamadır.
Scripted tanımlamada groovy kullanılarak yapılır. Declarative tanımlama tavsiye edilmesine rağmen, scripted tanımlama ile herhangi bir kısıtlama olmadan herşeyi yapabiliyorsunuz.
Scripted tanımlama bize daha esnek bir tanımlama imkanı sunuyor. İkisini de tercih edebilirsiniz.
Başlangıç düzeyindeki kişiler için ise, declarative tanımlama daha basit ve uygun olacaktır.
Örnek bir job oluşturalım şimdi de Jenkins üzerinde. Yeni öğe diyerek tanımlamaya başlayalım:
Burada Örnek Pipeline Uygulaması adında bir proje oluşturuyorum ve pipeline'yi seçip projeyi oluşturuyorum
Ardından gelen ekranda pipeline kısmına gelip pipeline tanımımı yapıyorum.
Koda buradan ulaşabilirsiniz:
pipeline {
agent any
stages {
stage('build') {
steps {
echo 'testing'
}
}
}
}
Script'in görevi çıktı olarak testing ifadesi göndermek. Projeyi kaydediyoruz.
Projeyi kaydettikten sonra gelen ekranda şimdi yapılandır butonuna basmanız ve beklemeniz durumunda aşağıdaki gibi çıktı alacaksınız
Yeşil renk projenin başarılı olduğunu gösterir
Yeşil kısma tıkladıktna sonra logs kısmına tıklarsanız çıktıyı görebilirsiniz
Log çıktısı aşağıdaki gibidir:
Üstte belirtildiği gibi pipeline uygulaması amacını gerçekleştirdi. Yani ekrana testing adında bir çıktı yazdı.
Sonuç olarak jenkins tarafında pipeline'nin ne olduğunu açıkladık ve örnek basit bir uygulama yaptık. Pipeline tamamen komutlarla özelleştirilebilir ve kendi entegrasyonumuzu yaratabiliriz.