GitLab: Menyiapkan Runner
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
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
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.
Konfigurasi telah tersimpan, selanjutnya kita akan melakukan instalasi dan registrasi runner di VPS dengan petunjuk yang telah diberikan seperti pada halaman berikut
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
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 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.
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
Jika berhasil pada halaman pengaturan runner akan muncul status Online
, jika belum berhasil maka akan berstatus Never contacted
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.
Setelah meng-clone repository tersebut, kita tambahkan sedikit pipeline sederhana pada file .gitlab.yml
lalu push ke repository.
Pipeline yang telah kita buat akan triggered ketika dipush ke repository. Bisa dilihat di http://{your-self-hosted-url}/{user}/{repository}/-/pipelines
Berdasarkan deskripsi di sebelah kanan, runner yang menjalankan pipeline tersebut adalah runner yang baru saja kita buat
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