Published on

Self-Hosted Gitlab Sunucusunda Linux Gitlab Runner Entegrasyonu ve Pipeline Oluşturma

Authors
  • avatar
    Name
    Alperen Önal
    Twitter

Bu yazıyı daha rahat anlamak için serinin önceki yazılarına göz atın.

  1. Azure'de Ubuntu Makinesi Üzerine Gitlab Kurulumu ve Yönetimi ?

  2. Makefile nedir ? Nasıl Kullanılır ? ?


Öncelikle şu terimleri bir hatırlayalım.

  • GitLab Runner : Gitlab CI/CD'nin bir parçası olarak çalışan bir uygulamadır. CI/CD pipeline'larında tanımlanan jobs(işleri) çalıştırırlar. Farklı işletim sistemleri ve ortamlar için gitlab runner'lar kurulabilir.

  • Gitlab CI/CD : CI/CD (Continuous Integration/Continuous Delivery), sürekli entegrasyon ve sürekli teslimat/desteklemeyi sağlar. Bu sistem, kod değişikliklerini otomatik test eder, derler ve dağıtır.

  • GitLab Pipeline : CI/CD sürecini temsil eden bir işlem akışıdır. Bir pipeline, bir veya birden fazla stage'den oluşur. Her stage önceden belirlenen bir görevi yerine getirir. Örneğin bir pipeline, kodun derlenmesi, test edilmesi ve dağıtılması gibi bir çok stage'dan oluşabilir.

  • GitLab Jobs : Bir pipeline içindeki bireysel görevlerdir. Her bir job, belirlenen bir komutu veya komut grubununu çalıştırmaktadır. Job'lar belirli bir stage'de yer alarak sıralı veya paralel olarak çalıştırılır. Örneğin, bir derleme aşamasında bir derleme job'u, bir test aşamasında ise bir test job'u bulunabilir. Her job tamamlandığında başarısız veya başarılı olarak işaretlenir.


  1. İlk olarak projemizin(makefile yazımızdaki c kodu. Özetle ekrana 8 rakamını yazdırıyor.) ana ekranına geliyoruz ve sol kısımdaki settings->ci/cd seçeneğine tıklıyoruz.

  1. Ardından karşımıza gelen sekmeden "runners" başlığı altındaki "New project runner" butonuna tıklıyoruz.

  1. Açılan sayfadan runner'ımızı isteğimiz doğrultusunda özelleştiriyoruz.

  1. Karşımıza çıkan sayfayı kayıt işlemi bitene kadar kesinlikle kapatmıyoruz. Çünkü kapattığınız taktirde tokene bidaha ulaşamayacaksınız ve 1. adımdan tekrar başlamak zorunda kalacaksınız.

Üsteki işlemleri tamamladıktan sonra gitlab-runner yüklemek istediğimiz makine terminaline gidiyoruz.

Öncelikle paket yöneticimizin deposuna gitlab deposunu ekliyoruz.

curl -L "https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh" | sudo bash

Ardından, az önce eklemiş olduğumuz depodan faydalanarak gitlab-runner'ı makinemize indirip kuruyoruz.

sudo apt-get install gitlab-runner

Evet, artık makinemizde gitlab-runner olduğuna göre Azure sunucumuzdaki gitlab'ımıza kayıt edebiliriz. Bunun için az önce karşımıza çıkan kayıt "register" sekmesindeki bilgilerden faydalanabiliriz.

sudo gitlab-runner register

Üstte bulunan komutu yazdıktan sonra bizden istediği token, url, executer vs. bilgileri giriyoruz.


Projemizin ci/cd kısmından runner'ımızın çevrimiçi olduğunu artık görebiliriz.


Ardından aşağıdaki komutumuzu terminale yazarak gitlab-runner'ımızı koşturmaya başlatıyoruz.

sudo gitlab-runner run

Evet artık runner'ımız koşuyor. "Job" tanımlamak, pipeline oluşturmak ve bu runner'lara işleri yaptırmak için projemizin ana dizinine ".gitlab-ci.yml" isimli dosyayı oluşturmalıyız.

Proje ana dizinime .gitlab-ci.yml dosyasını ekliyorum ve aşağıda görebileceğimiz gibi çalışmasını istediğim runner'ıma ait tag'ı ekliyor ve runner'ın tetiklendiği zaman yapması gerekenleri belirtiyorum. Bu senaryoda src klasörüne girmesini, make komutunu çalıştırmasını ve son olarak derlenen programı çalıştırmasını sırasıyla belirtiyorum.

stages:
  - build

build-job-debian:
  stage: build
  tags:
    - debian-runner
  script:
    - cd src
    - make
    - ./program

Bu değişikliği commit attığımızda sağ üste tik işaretini görebiliyoruz. Buradan, runner'ımız tetiklendiğini ve ilgili job'u sorunsuz şekilde tamamladığını anlayabiliyoruz.


Project->Build->Jobs ekranına gittiğimiz zaman konsol ekranından çıktıya ulaşabiliriz.


KAYNAKÇA :

  • docs.gitlab.com/runner/register
  • docs.gitlab.com/runner/install