Kenapa Gitlab Runner ini berguna banget buat production aplikasi web?
Awalnya tuh punya dua server, Development dan Production. Dimana server Development buat uji coba apakah ada fitur yang error kah yang harus di test terlebih dahulu sebelum di upload ke server Production. Nah setelah aman semua di server Development selanjutnya harus upload donk ke server Production.
Ok fine kalo sekali dua kali update fitur atau fix bug dengan upload manual ke server Production sih gak papa, cuman kok lama – lama cape juga ya ada gk cara terotomatis gituu? Nah Jawabannya adalah dengan Gitlab Runner bakal dari serba otomatis pokonya tinggal push ke branch master. Taraaa langsung update to date server production servernya.
Gitlab Runner adalah sebuah service yang digunakan untuk menjalankan job dan mengirimkan hasilnya kembali ke GitLab. Korelasi antara GitLab dan GitLab Runner yaitu keduanya merupakan bagian dari CI/CD (Continuous Integration/Continuous Delivery).
Disini saya menggunakan operating sistem Linux – Ubuntu 18, langkah – langkah sebagai berikut
Download format binarinya Gitlab Runner yang akan di simpan di folder bin system
sudo curl -L --output /usr/local/bin/gitlab-runner "https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64"
Agar file binari tadi bisa di eksekusi maka jalankan perintah ini
sudo chmod +x /usr/local/bin/gitlab-runner
Nah langkah ini sebenernya optional sih, kalo saya gk perlu buat user lagi tapi cuman perlu buat folder aja misalnya kalo saya buat home folder dengan nama gitlab-runner
sudo useradd --comment 'GitLab Runner' --create-home gitlab-runner --shell /bin/bash
Next step nya install service Gitlab Runner nya –user=bitnami nah user bitnami lah yg punya akses untuk mengeksekusi kerjaan Gitlab Runner di server dan –working-directory=/home/gitlab-runner ini biar di Gitlab Runner punya folder untuk build kalo ada versi baru commit
sudo gitlab-runner install --user=bitnami --working-directory=/home/gitlab-runner
Sudah terinstall service Gitlab Runner nya, tinggal running atau jalanin si service nya
sudo gitlab-runner start
Dan yg paling penting adalah mendaftarkannya service Gitlab Runner ini agar bisa terhubung dengan server nya Gitlab.
sudo gitlab-runner register
Enter your GitLab instance URL (also known as the gitlab-ci coordinator URL).
Enter the token you obtained to register the runner.
Enter a description for the runner. You can change this value later in the GitLab user interface.
Enter the tags associated with the runner, separated by commas. You can change this value later in the GitLab user interface.
https://docs.gitlab.com/runner/register/index.html
Gak kalah pentingnya adalah rsync, kenapa rsync ? Rsync adalah fitur pada sistem operasi berbasis Linux (seperti Ubuntu, Fedora, dan Debian) yang berfungsi untuk menyinkronkan file serta folder. Jadi konsepnya setelah Gitlab Runner selesai build versi baru dari commit terakhir akan di sync seluruh file ke folder htdocs
sudo apt-get install rsync
Jangan lupa buat file baru di root foldernya .gitlab-ci.yml dengan code dibawah ini.
stages:
- deploy
job1:
stage: deploy
script:
- rsync -avz --exclude='.git/' --include '*/' "$PWD"/ /home/bitnami/htdocs/
- cd /home/bitnami/htdocs/; /opt/bitnami/php/bin/composer update
- echo 'CI_ENVIRONMENT = production' >>.env
- sudo chmod -R 777 writable/
only:
- master
tags:
- master
Penjelasan kode di atas stages: -deploy yah dikasih nama stage / tahap deploy
Gitlab akan membaca code di atas job1 artinya ada kerja yang harus di eksekusi oleh Gitlab Runner
Kemudian ada script yg akan di jalankan rsync -avz –exclude=’.git/’ –include ‘*/’ “$PWD”/ /home/bitnami/htdocs/ akan mensinkron kan hasil build ke htdocs, cd /home/bitnami/htdocs/; /opt/bitnami/php/bin/composer update akan menjalankan composer update
Tags, Only kenapa master ? yahh jadi hanya akan berjalan CI/CD bila ada commit baru pada branch master
Sekian