GitLab: Menyiapkan Runner

Khoironi Kurnia Syah
Sainseni
Published in
5 min readAug 1, 2023
Photo by Yancy Min on Unsplash

Pada periode bulan ini sampai bulan depan saya ditugaskan untuk memahami tentang CI/CD, Terraform, dan beberapa hal DevOps lain. Kebetulan saya sedang membangun self-hosted GitLab untuk Sainseni jadi langsung saja saya praktikan bagaimana CI/CD berjalan.

Sainseni adalah komunitas yang saya buat dengan tujuan sebagai wadah untuk membantu kawan-kawan designer (UI/UX) dan programmer (software engineer, dkk) walaupun belum berjalan, hehe.

Prasyarat

Di sini saya menggunakan self-hosted GitLab yang telah terinstall di https://gitlab.sainseni.org dan spesifikasi VPS yang saya gunakan adalah sebagai berikut:

GitLab Server VPS:
- Provider: Digital Ocean
- CPU: Intel 2vCPUs
- Memory: 4GB
- Storage: 80GB NVMe SSDs
- OS: Ubuntu 20.04 (LTS) x64

Runners VPS:
- Provider: Digital Ocean
- CPU: Intel 1vCPU
- Memory: 1GB
- Storage: 25GB NVMe SSDs
- OS: Ubuntu 20.04 (LTS) x64

Spesifikasi GitLab Server VPS yang saya gunakan adalah spesifikasi paling minimum untuk dapat menjalankan GitLab Server, sedangkan untuk GitLab Runner saya tidak tahu pasti minimum requirements-nya. Tentu saja semakin tinggi spesifikasinya maka semakin bagus performanya.

Registrasi Runner di GitLab Server

Pastikan telah memiliki VPS atau mungkin bisa menggunakan komputer pribadi yang telah terpasang Linux, di sini saya menggunakan Droplet dari Digital Ocean

Digital Ocean Droplets

Karena ingin menginstal runner di self-hosted GitLab, maka pertama kunjungi halaman konfigurasi runner di GitLab server kita, yaitu:
http://{your-self-hosted-url}/admin/runners
lalu klik tombol New instance runner

GitLab Runner Configuration Page
GitLab Runner Configuration Page

Selanjutnya mengisi pilihan konfigurasi yang akan digunakan pada runner, di sini saya isi OS: Linux karena saya menggunakan Ubuntu dan centang Run untagged jobs untuk menjalankan semua job / pipeline jika tidak ingin runner tereksekusi spesifik berdasarkan tag.

Lalu klik Create runner pada bagian bawah halaman.

Create Runner Instance

Konfigurasi telah tersimpan, selanjutnya kita akan melakukan instalasi dan registrasi runner di VPS dengan petunjuk yang telah diberikan seperti pada halaman berikut

Runner Registration

Instalasi GitLab Runner di VPS

Sebelum melakukan instalasi ada baiknya memperbarui packages di VPS kita.

sudo apt update -y && sudo apt upgrade -y && sudo apt dist-upgrade -y && sudo aptremove -y && sudo apt autoclean -y

karena menggunakan user root sebenarnya tidak perlu menggunakan sudo dan command selain update / upgrade hanyalah tambahan yang biasa saya pakai.

males sensor lagi dan dropletnya nanti saya hapus jadi saya biarin tanpa sensor

Memperbarui Packages di Ubuntu

Mengunduh package instalasi GitLab Runner menggunakan curl dan menyimpannya sebagai file dengan nama gitlab-runner pada folder /usr/local/bin/

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

Mengubah hak akses gitlab-runner installer agar bisa dieksekusi.

sudo chmod +x /usr/local/bin/gitlab-runner

Membuat akun / user baru untuk GitLab Runner

sudo useradd --comment 'GitLab Runner' --create-home gitlab-runner --shell /bin/bash

Menjalankan instalasi dengan konfigurasi user yang baru dibuat

sudo gitlab-runner install --user=gitlab-runner --working-directory=/home/gitlab-runner

Menjalankan service gitlab-runner

sudo gitlab-runner start
Instalasi GitLab Runner Berhasil dan Berjalan

Instalasi telah berhasil, selanjutnya kita registrasi runner tersebut dengan petunjuk yang telah diberikan sebelumnya

Registrasi Runner di VPS

Setelah melakukan instalasi runner di VPS, selanjutnya kita melakukan registrasi atau konfirmasi dengan menggunakan token yang telah diberikan sebelumnya.

Register Runner to Our GitLab Server
gitlab-runner register  --url http://{your-self-hosted-url}  --token your-runner-registration-token

Kemudian memasukan dan memilih konfigurasi untuk eksekusi yang akan dijalankan runner (sesuaikan preferensi masing-masing).

Di sini saya ingin menggunakan docker dengan image alpine.

Enter the GitLab instance URL (for example, https://gitlab.com/):
[https://gitlab.sainseni.org]:

Enter a name for the runner. This is stored only in the local config.toml file:
[runner2]:

Enter an executor: docker-windows, parallels, docker+machine, instance, kubernetes, custom, docker, shell, ssh, virtualbox, docker-autoscaler:
docker

Enter the default Docker image (for example, ruby:2.7):
alpine

Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded!

Configuration (with the authentication token) was saved in "/etc/gitlab-runner/config.toml"

Jika ingin mengubah konfigurasi, kalian bisa melakukan perubahan pada file dengan path /etc/gitlab-runner/config.toml

sudo nano /etc/gitlab-runner/config.toml
Registrasi Runner di VPS

Jika berhasil pada halaman pengaturan runner akan muncul status Online, jika belum berhasil maka akan berstatus Never contacted

Status Runner

Catatan

Karena tadi memilih untuk menggunakan docker maka pastikan VPS kita sudah terinstall docker agar runner bisa berjalan. Untuk tutorialnya bisa dibaca di How To Install and Use Docker on Ubuntu 20.04.

Tes Runner

Untuk mengetes apakah runner yang telah kita instal dapat dijalankan, selanjutnya kita membuat repository dengan menggunakan NodeJS example project dan menambahkan file .gitlab-ci.yml untuk membuat pipeline CI sederhana.

NodeJS Example Project
Example Repository

Setelah meng-clone repository tersebut, kita tambahkan sedikit pipeline sederhana pada file .gitlab.yml lalu push ke repository.

Simple GiLab CI

Pipeline yang telah kita buat akan triggered ketika dipush ke repository. Bisa dilihat di http://{your-self-hosted-url}/{user}/{repository}/-/pipelines

Pipeline Test

Berdasarkan deskripsi di sebelah kanan, runner yang menjalankan pipeline tersebut adalah runner yang baru saja kita buat

Job Succeeded

Penutup

Proses setup runner telah berhasil dan berjalan dengan baik. Selanjutnya saya ingin membuat pipeline yang mungkin lebih kompleks dan juga menggunakan Terraform.

Thank you. Written on 26th July 2023

--

--