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.