Persyaratan

Saya menggunakan Gilab self-hosted dan gitlab-runner yang di install menggunakan docker.

Jika belum dan ingin install GitLab self-hosted bisa lihat caranya disini.

Jika ingin install GitLab Runner menggunakan docker bisa lihat caranya disini.

Buat job sederhana

Sekarang kita akan coba membuat job sederhana. Job yang dijalankan akan seperti ini:

  1. Job akan ke trigger jika ada perubahan di branch main.
  2. Job akan menjalankan stages build dan deploy.
  3. Job akan dijalankan di dalam docker.

Membuat file .gitlab-ci.yml

stages:
  - build
  - deploy

build:
  stage: build
  image: alpine:latest
  script:
    - echo "Starting build stages..."
    - echo "Running another command..."

deploy:
  stage: deploy
  image: alpine:latest
  script:
    - echo "Starting deploy stages..."
    - echo "Running another command..."
    - echo "job finished!"

Kemudian, save perubahan tersebut pada gitlab atau push perubahan tersebut ke gitlab pada branch main.

Register Runner

Jika kita ke repository yang ada di gitlab, maka kita akan melihat seperti gambar di bawah ini. no-job-detected

Selanjutnya kita klik notifikasi tersebut, maka akan dijelaskan bahwa job yang pending tersebut dikarenakan belum ada runner yang di assigned ke project tersebut. pending-job-due-to-no-runner

Untuk register runner baru, kita akan buat dihalaman Settings | CI/CD | Runners | New Project Runners create-new-runner

Selanjutnya, kita akan membuat runner baru. create-token-new-runner

Maka, kita akan terbuat token baru. Kita copy token tersebut ke dalam container gitlab-runner. copy-token-runner

Mari kita daftarkan token tersebut. register-runner

Lalu kita kembali ke halaman runner pada gitlab. runner-registered

Dan dihalaman awal repository kita akan muncul notifikasi bahwa job kita yang tadinya pending menjadi success. job-success

Kesimpulan

Kita telah selesai untuk install gitlab self-hosted, gitlab runner dan juga coba membuat job pipeline sederhana. Pemanfaatan CI/CD ini ada banyak, seperti testing, pembuatan changelog otomatis dll.

Terimakasih!