Next
Artikel ini akan memandu Anda melalui proses konfigurasi pipeline Continuous Integration/Continuous Delivery (CI/CD) di GitLab, menggunakan contoh kode .gitlab-ci.yml yang telah kita bahas sebelumnya. Pipeline ini akan mengotomatisasi proses build Docker image, deployment ke lingkungan development dan production, serta pengiriman notifikasi.
Webhook juga dikenal sebagai "reverse API". Ini adalah alat yang memungkinkan satu sistem atau aplikasi untuk berkomunikasi dan mengirimkan pemberitahuan secara real-time tentang peristiwa tertentu ke sistem atau aplikasi lain..
Sebenarnya jika memiliki project di Gitlab.com maka Anda bisa langsung saja menggunakan Gitlab CI/CD nya. Namum memiliki batasan sehingga sampai 10 menit aja.
# as root
adduser default
# Append (-a) a secondary group (-G) "www-data" to user "default"
usermod -aG www-data default
# See groups assigned to user "default"
groups default
/var/www# check setfacl exists
which setfacl
# If doesn't exist:
sudo apt-get install -y acl
# Inspect current ACL's
getfacl /var/www
# Set current and default ACL's for /var/www
sudo setfacl -Rm g:www-data:rwx,d:g:www-data:rwx /var/www
Sekarang user default (bagian dari grup www-data) dapat membaca, menulis dan mengeksekusi direktori file di root /var/www.
Jika Anda belum membuat SSH key di VPS dengan user yang Anda butuhkan (misalnya: default),
silahkan ikuti panduan dari gitlab tentang cara membuat SSH key.
Bagi Anda yang sudah membuat lanjut ke langkah di bawah ini untuk mencetak public key:
cd ~/.ssh
cat id_rsa.pub
Selanjutnya, copy paste hasil keluaran tersebut dan taruh di repository Gitlab Anda => Settings => Repository.


sudo tanpa password untuk reload php-fpmSilahkan login dengan user yang memiliki akses sudo atau user root dan ketik perintah sudo visudo dan sisipkan baris ini di paling bawah.
# For reload php 8.2
%www-data ALL=(ALL:ALL) NOPASSWD: /usr/sbin/service php8.2-fpm reload
Karena kita akan menggunakan package Gitlab Webhook dan NodeJS, pastikan Anda memasang port custom di firewall agar firewall membuka akses custom port. Kita bisa memasangnya langsung di terminal server kita.
# nomor 1234 hanyalah contoh, Anda bisa menggantinya sesuai kebutuhan
sudo ufw allow 1234/tcp
# Melakukan pengecekan bila port 1234 masuk dalam daftar
sudo ufw status verbose
Catatan: Setelah itu, silahkan logout dari server dan login ke server.
/home/default/deploy/boilerplate
sudo apt update
sudo apt install nodejs
sudo apt install npm
# test nodejs
nodejs -v
npm init dan masukkan data-data yang diperlukan serta pastikan "main" diisi dengan value "index.js".npm install --save node-gitlab-webhookconst http = require('http')
const createHandler = require('node-gitlab-webhook')
// single handler
const handler = createHandler({ path: '/deploy', secret: 'secret' })
const execFile = require('child_process').execFile
http
.createServer(function (req, res) {
handler(req, res, function (err) {
res.statusCode = 404
#!/usr/bin/env bash
REPO='[email protected]:turahe/boilerplate.git'; #nama repo saya
RELEASE_DIR='/var/www/boilerplate/releases'; # direktori aplikasi saya
APP_DIR='/var/www/boilerplate/app'; # direktori aplikasi saya
RELEASE="release_`date +%Y%m%d%H%M%s`";
# tempat saya menaruh .env production file
# Jika Anda tidak ingin mengikuti cara ini pastikan Anda hapus perintah
# yang ada komentar # Copy .env file
ENV_PRODUCTION='/home/default/www/boilerplate/production/.env';
ROOT_DIR='/var/www/boilerplate';
SHARED_DIR='/var/www/boilerplate/shared';
# Fetch Latest Code
[ -d $RELEASE_DIR ] || mkdir -p
chmod ug+x deploy.sh
bash deploy.sh
dan apakah berjalan dengan lancar?
Semoga berhasil.


node index.js di dalam direktori tadi dan lakukan testing git push pada dropdown test di
Webhooks yang disediakan Gitlab.Catatan: Jika Anda mengalami service time out di Gitlab hooks, kemungkinan besar adalah Anda tidak memasang port di VPS Anda atau port Anda pasang salah. Mohon dicek lebih teliti lagi.
Tentunya kita tidak ingin setiap kali buka terminal dan menjalankan perintah node index.js.
Salah satu cara untuk menghindari ini adalah dengan membuat daemon service yang menjalankan perintah node tadi.
npm install pm2@latest -g
pm2 start index.js --port 1234
pm2 startup
pm2 save
Join the discussion below.
Sign in to leave a comment.
No comments yet. Be the first to comment.