Gitlab Projeden Projeye Yaml Triggerlamak

image001.png

Gitlab Projeden Projeye Yaml Triggerlamak.

Bu yazıda Gitlab’da yetkimizin olmadığı A projesindeki Yaml’ı B projesinde nasıl çalıştırırız bundan bahsedeceğim. Normalde trigger ve include parametreleri ile bu işlemi yapabiliriz. Ama benim üzerinde duracağım konu çalışan kişinin A projesinde yetkisi olmaması durumunda nasıl çalıştıracağımız. Çünkü yetki olmaması durumunda trigger ve include parametreleri yetkisi yok hatası vermektedir. Trigger ve include için örnekleri görebilirsiniz.

Gitlab Projeden Projeye Yaml Triggerlamak

Resim-1

Resim-2

A projesindeki Yaml dosyası hazırlığı

Şimdi ilk olarak A projesindeki Yaml’ımızı hazırlayacağız. Burada docker build ve docker push işlemini yapan bir Yaml olacak.

Resim-3

Buradaki yaml’ımız da docker build işlemini yaptıktan sonra giltab’ın container registry’sine push işlemini yapmaktadır. İmage name’ı parametrik olarak almaktadır. Buradaki yaml’ı tamamladıktan sonra B projesine geçebiliriz.

B projesine bakış

B projesi için öncelikle build olacak projeyi ve dockerfile’ını proje içine koyuyoruz.

Resim-4

Bu işlemi tamamladıktan sonra .gitlab-ci.yml’ımızı hazırlayabiliriz. Bu .gitlab-ci.yaml 2 job adımından oluşacak. Birinci job git clone ile docker-build.yaml’ın bulunduğu projeyi indireceğiz. İkinci job’da da indirdiğimiz proje içindeki docker-build.yaml’ı kullanarak docker build ve docker push işlemlerini yapacağız.

İlk olarak git clone job ile başlıyoruz.

Resim-5

Burada git clone komutunu kullanarak A projesini indiriyoruz. İndirme sırasında 3 tane variable veriyoruz. Artifact parametresi ile indirdiğimiz a-projesinin içindeki tüm yaml dosyalarını diğer joblarında kullanmasını sağlıyoruz. Eğer artifact parametresini vermezsek diğer joblar git-clone job’ındaki yaml’ları göremez ve job yaml’ı bulamadım diye hata atar.

TRIGGER_BRANCH: A projesinde indireceğimiz branch’i belirtmek için

TRIGGER_CI_NAME: Access token’ın adı için

TRIGGER_CI_TOKEN: Access token için

Access token oluşturmak için A projesinin settings’deki Access Token alanına giriyoruz.

Resim-6

Burada gerekli bilgileri doldurarak bir tane Access Token oluşturuyoruz.

Resim-7

Create projects access token butonuna bastıktan sonra token oluşur. Bu oluşan token’ı saklamanız gerekmektedir.

Resim-8

CI-CD’ler için token bilgilerinin variables alanında eklenmesi

Bu oluşturduğumuz token bilgilerini ana variables kısmına ekleyerek tüm CI-CD’lerin kullanmasını sağlıyoruz. Bunun için admin area sayfasındaki settings’deki CI-CD alanına gidiyoruz.

Resim-9

Resim-10

Burada variables alanından yeni variable ekleyerek TRIGGER_CI_NAME ve TRIGGER_CI_TOKEN tanımlamalarını yapıyoruz.

Resim-11

Resim-12

Resim-13

Bu eklemeler yapıldıktan sonra tüm CI-CD’ler bu variableları kullanabilir.

Docker buid ve Docker push yapılması

Şimdi ikinci job’ımız olan projenin docker build ve docker push işlemlerinin yapılması. Bunun için b projesindeki .gitlab-ci.yaml’a trigger job’ımızı ekliyoruz.

Resim-14

Burada job’ımızın adını b-projesi veriyoruz. Trigger için de git-clone job’ındaki artifact olarak aldığımız a-projesinin içindeki docker-build.yaml’ı kullanıyoruz. Bu sayede docker-build.yaml içindeki job’ları çalıştırmış oluyoruz. Oluşacak ve pushlanacak image adını da b-projesi olarak veriyoruz.

.gitlab-ci.yaml dosyamız tamamen hazırlamış olduk artık tag çıkarak yeni image oluşturabiliriz.

Resim-15

Resim-16

Resim-17

Resim-18

Resim-19

Bugün yetkimizin olmadığı bir projedeki Yaml’ı kendi projemiz de nasıl kullanacağımızı işledik. Gitlab Projeden Projeye Yaml Triggerlamak yazısını keyifle okumanız dileğiyle.

Bu konuyla ilgili sorularınızı alt kısımda bulunan yorumlar alanını kullanarak sorabilirsiniz.

Referanslar

www.mshowto.org

https://docs.gitlab.com/ee/ci/yaml/

Yazı gezinmesi

Mobil sürümden çık