Gitlab Runner, CI/CD Untuk Pemula

Gitlab Runner, CI/CD Untuk Pemula

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

service Gitlab Runner sudah terhubung dengan Gitlab

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

Hasil commit dan push ke branch Master

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.