Git: Gitlab Auto build.

Local to Experimental. Auto build after several commit or tag. As you please, master.

Setelah commit ke Gitlab aku biasanya akan memindahkan tahap build di server terpisah yang kunamakan server-build. Berikut ini adalah kode untuk build otomatis di server build:


#!/usr/bin/env bash

# ~
# build.sh
folder="project-folder"
if pgrep -x "node" > /dev/null 2>&1; then
  echo "build is running"
else
  echo "now starting build process"
  cd $folder
  npm i
  npm run build
  cd ..
fi
exit 0
# Eksekusi file ini dari cron
# /etc/crontab :
# SHELL = /usr/bin/env bash
# 15 * * * * root $SHELL ~/build.sh

Yap, setelah commit aku menunggu build proyek tadi sampai jadi. Masalahnya aku tidak tahu sampai kapan akan menunggu.

Gitlab memberi kemudahan dengan CI/CD terintegrasi. Prosesnya cukup mudah, yaitu dengan menambahkan .gitlab-ci.yml. Apakah itu? Jadi, file ini berisi kumpulan konfigurasi yang akan dijalankan oleh CI/CD Gitlab. Berikut ini contohnya.


# project-directory
# .gitlab-ci.yml

image: buildkite/puppeteer:latest

cache:
  paths:
    - node_modules/

before_script:
  - test -e package.json
  - npm install

pages:
  stage: deploy
  script:
  - npm run build
  artifacts:
    paths:
    - public
  only:
  - develop

Ya, .gitlab-ci.yml akan tereksekusi secara otomatis setiap ada perubahan kode di repository proyek. Masalah lagi, proses build ini memakan waktu dan gitlab membatasi akun gratis hanya memperoleh kuota build 2000 jam per bulan di shared gitlab-runner. Tentu dapat diatasi jika ada gitlab-runner private yang aktif untuk proyek dimaksud. Apakah itu gitlab-runner? Semacam server build virtual yang digunakan CI/CD Gitlab. Jika kalian menggunakan Gitlab perusahaan yang mungkin belum terdapat gitlab-runner aktif, bisa coba cara ini:


# Aku pakai opensuse Leap 15.1 x64 dengan zypper sebagai package manager jika kalian menggunakan komputer dengan sistem operasi lain bisa cek di https://docs.gitlab.com/runner/install/
# ~
# Install docker dan aktifkan

$  sudo zypper install docker docker-compose
$  sudo systemctl enable docker
$  sudo systemctl start docker

# cek apakah docker sudah aktif
$  docker version

# Gitlab-runner belum bisa digunakan kalau tidak didaftarkan ke gitlab-server tempat proyek tadi berada. Cara mendaftarkan runner ada di link berikut: https://docs.gitlab.com/runner/register/
# Keterangan runner tersedia untuk setiap proyek dapat dilihat di halaman gitlab-server berikut: http://internalgit.com/user/project/settings/ci_cd
# Keterangan build job untuk setiap proyek dapat dilihat di halaman gitlab-server berikut: http://internalgit.com/user/project/-/jobs
# ~
# Install gitlab-runner, daftar dan aktifkan
$  curl -LJO https://gitlab-runner-downloads.s3.amazonaws.com/latest/rpm/gitlab-runner_amd64.rpm
$  sudo zypper in ./gitlab-runner_amd64.rpm 
$  sudo gitlab-runner register
$  sudo gitlab-runner start

Selamat mencoba. Jangan lupa cantumkan keterangan pipeline build di README.md proyek kalian dengan kode berikut:

[![pipeline status](http://internalgit.com/user/project/badges/develop/pipeline.svg)]( http://internalgit.com/user/project/commits/develop)
Kalian bisa membaca lebih lanjut mengenai gitlab-runner di dokumentasi gitlab.