GitLab Runner Nedir? Nasıl Kurulur ve Yapılandırılır?

GitLab Runner, GitLab CI/CD süreçlerinde kullanılan, projelerimizdeki kodların derlenmesi, test edilmesi ve deploy edilmesi gibi işlemleri gerçekleştiren bir uygulamadır. GitLab Runner, GitLab sunucusuna bağlı olarak çalışır ve CI/CD pipeline'ında tanımlanan aşamaları çalıştırır.

1. GitLab Runner Nedir?

GitLab Runner, CI/CD'nin arka planda çalışan bileşenidir. Pipeline aşamaları runner tarafından gerçekleştirilir ve bu aşamalar, kodun test edilmesi, derlenmesi veya dağıtılması gibi işlemleri içerir. GitLab Runner, shared ya da specific olabilir.

2. GitLab Runner Kurulumu

2.1. Depoyu Ekleme

İlk adımda GitLab Runner deposunu ekleyip güncelleyin:

curl -L --output /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64 chmod +x /usr/local/bin/gitlab-runner

2.2. GitLab Runner'ı Offline Kurma

GitLab Runner'ı kurmak için aşağıdaki komutu çalıştırın:

sudo gitlab-runner install sudo gitlab-runner start

2.3. GitLab Runner'ı Online Kurma

Gitlab Runner'ı online kurabilmeniz için Debian altyapılı linux dağıtımları için apt install gitlab-runner kullanabiliriz.

Bir diğer yum paket dağıtıcısı kullanan linux dağıtımları için ise dnf veya yum paketlerini kullanabiliriz. Örnek; dnf install gitlab-runner veya yum install gitlab-runner

Diğer adımları uygulayarak sürece devam edebiliriz.

2.4. GitLab Runner'ı Gitlab Kayıt Ettirme

Runner'ı GitLab projenize bağlamak için aşağıdaki komutu kullanarak kaydedin:

sudo gitlab-runner register

Bu işlem sırasında GitLab'deki projeden bir "token" almanız gerekir ve kayıt sırasında aşağıdaki bilgileri girmeniz istenir:

  • GitLab instance URL: https://gitlab.com
  • Token: GitLab'den aldığınız kayıt token'ı
  • Executor: docker, shell gibi bir çalıştırma ortamı seçin

3. CI/CD Pipeline Çalıştırma

GitLab Runner'ı kurduktan sonra, projenizin kök dizininde .gitlab-ci.yml dosyasını oluşturabilirsiniz.

Örnek .gitlab-ci.yml Dosyası:

                
stages:
  - build
  - test
  - deploy

build:
  stage: build
  script:
    - echo "Building the project..."
    - npm install

test:
  stage: test
  script:
    - echo "Running tests..."
    - npm test

deploy:
  stage: deploy
  script:
    - echo "Deploying the project..."
    - npm run deploy



                

Gitlab Runner Deployment Örnek


image: alpine

stages:
  - build
  - deploy

variables:
  GIT_DEPTH: 0

build:
  stage: build
  only:
    - main
  script: |
    # build the image
    docker build -t "$CI_PROJECT_PATH_SLUG:$CI_COMMIT_SHA" .

    # login to docker hub
    echo "$DOCKERHUB_TOKEN" | docker login --username "$DOCKERHUB_USERNAME" --password-stdin

    # push the image
    docker push "$CI_PROJECT_PATH_SLUG:$CI_COMMIT_SHA"

            

Yukarıdaki deployment örneğinden gidecek olursak, iki adet stage aşamasından oluşmaktadır. Bunlar; build ve deploy aşamalarıdır. GIT_DEPT: 0 komutu mevcut repomuzun tam olarak klonlanmasını sağlamaktadır.

Script kısmında projemizi build etme işlemini -t parametresi ile gerçekleştirmektedir.

 Docker hub'a login olduktan sonra oluşturulan image son aşamada push işlemiyle sonlanır. Gitlab-Runner'ın oluşturmuş olduğu container silinir ve task tamamlanmış olur.

4. GitLab Runner Avantajları

  • Esneklik: Docker, shell gibi farklı ortamlarda çalışabilir.
  • Otomatik CI/CD Süreci: Kodu her push ettiğinizde pipeline çalışır.
  • Özelleştirilebilir: Proje bazında farklı runner'lar ayarlayabilirsiniz.