[ARAÇ] Web üzerinden Github/Gitlab Pipeline Tetikleme

Sevgili yazılımperver takipçilerim, yeni ve inşallah kısa bir yazı ile tekrar birlikteyiz. En son Conan 2.0’a yönelik yazımı sizler ile paylaşmıştım, inşallah Conan’a yönelik yazılarıma devam edeceğiz, bunun ile birlikte öncelikle CI/CD ile ilgili bir yazıyı sizlerle paylaşıyor olacağım.

Daha önce sizlerle birlikte github üzerinde cpp-playground reposu için github actions ile pipeline’larımız oluşturmuştuk ve her commit ile bu pipeline’ların tetiklendiğini sizler ile paylaşmıştım.

Peki kardeşim, ben bu pipeline’ı web üzerinden de, bir yerlere tıklayarak tetikleyemez miyim? Bu yazıda bunu nasıl yapabileceğimize bakacağız. Nereden çıktı bu diyebilirsiniz, lakin benim gibi Azure TFS kullandıysanız, orada pipeline’ları herhangi bir şey yapmadan web üzerinden de tıklayarak da çalıştırabiliyordunuz. Niye buna ihtiyaç da var diyebilirsiniz, aslına bakarsanız yok. Pipeline’ları commit’ler ile tetikliyorsanız yine sıkıntı olmaması lazım, gel gör ki merak ettim ve bu yapılabiliyor mu diye merak ettim. Evet nedir bunun yöntemi peki?

Yapmanız gereken temelde trigger (on:) satırlarına “workflow_dispatch:” ‘i ekliyoruz:

Bunu ekledikten sonra https://github.com/yazilimperver/cpp-playground/actions/workflows/cpp-playground.yml sayfasına gidip, sol sekmeden “SDL3 Cpp Playground Github Actions”‘ı seçtikten sonra, aşağıdaki bildirimi göreceksiniz:
“This workflow has a workflow_dispatch event trigger.”
Ve aşağıdaki gibi bir menü gelmiş olacak:

Evet, yukarıda gördüğünüz üzere artık el ile, web üzerinden de bu pipeline’ı artık tetikleyebileceğiz. Şimdi gelelim ikinci hususa: gitlab.

Bu vesile ile yolculuğumuza gitlab’ı da ekliyoruz. Açıkçası bir süredir gitlab’ı da hem profesyonel hem de kişisel hayatımda kullanmaya başladım (iş hayatımda Azure TFS’i de kullanıyorum bu arada). Bundan sonraki çalışmalarımda da, gitlab’ı daha sık kullanmayı hedefliyorum. Bu sebeple de, repoyu cpp-playground projesini gitlab’a da taşıdım. Motivasyonum devam ettiği sürece hem github hem de gitlab üzerinde hususları göstermeye çalışacağım ama ağırlığı bir noktada gitlaba kaydırmayı hedefliyorum.
Tabi ki yapacağımız ilk iş, mevcut workflow’umuzu gitlab için uyarlamak. Bunu yaparken de tabi artık manuel bunu yapmıyoruz 🙂 Çeto veya avaresinden hemen destek aldım. Keza kendisinin bu konuda yaptığı ilk yorum aşağıdaki gibi:
GitLab CI/CD dünyasına geçerken bazı temel farkları bilmek işimizi kolaylaştıracakmış:
  • Workflow vs Pipeline: GitHub’daki steps, GitLab’da genellikle script bloğu altına yazılır,
  • Jobs: GitLab’da her iş (job) varsayılan olarak temiz bir ortamda başlar. Dosyaları bir sonraki aşamaya aktarmak için artifacts kullanmak gerekir,
  • Runners: GitHub’ın windows-latest ve ubuntu-latest imajları yerine, GitLab’da Docker imajlarını veya Windows için özel “tag”lenmiş runnerları kullanılır.
Gitlab ile CI/CD’leri tetiklemek için tepe dizine .gitlab-ci.yml dosyası ekliyoruz ve içeriğini üretilen şekilde aşağıdaki gibi güncelliyoruz:

gitlab için, github’takinin birebir benzer, tek bir tetikleme mekanizması bulunmasa da (ya da ben göremedim), aşamalar manuel olarak tetiklenebilmekte. Yukarıda verilen pipeline dosyasındaki aşağıdaki satırlar tam olarak bize bunu sağlıyor olacak:

bunları ekledikten sonra gitlab web sayfasında artık aşağıdaki görseller görülebilir:

Bu görsellerde, manuel tetik eklediğimiz adımlar için “play” tuşlarını görebilirsiniz.

Fakat burada da şöyle bir durum oluşuyor. Gitlab’daki manuel her zaman sizden bir girdi bekliyor ve commit’leriniz ile tetiklenmiyor. Yani tam olarak istediğimiz kabiliyet değil ama bunun da elbette bir kullanımı mevcut. Örneğin, pipeline’ları manuel olarak tetiklemek isterseniz, bu kabiliyet sizlere faydalı olabilir. Ayrıca bu kabiliyet ile değişkenler de pipeline’a geçirilebilir.

Evet, bu yazımızın da sonuna geldik. Sonraki yazılarımızda, CI/CD ve conan ile ilgili konulara devam ediyor olacağız. O zamana kadar kalın sağlıcakla. Her türlü görüş ve önerileriniz, yazilimperver@gmail.com ya da yorumlar üzerinden bana iletebilirsiniz.

Bir yanıt yazın

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

Bu site, istenmeyenleri azaltmak için Akismet kullanıyor. Yorum verilerinizin nasıl işlendiği hakkında daha fazla bilgi edinin.