Lompat ke konten
Home » Simple CI/CD dengan Webhook dan Supervisor di Ubuntu

Simple CI/CD dengan Webhook dan Supervisor di Ubuntu

  • GIT

CI/CD adalah sebuah metode untuk melakukan deliver perubahan secara incremental pada aplikasi secara terus menerus kepada konsumen. Pada saat ini, sudah ada beberapa tools yang dapat anda gunakan untuk metode CI/CD ini yaitu Jenkins, AWS Codebuild, Azure DevOps, Gitlab CI/CD. Namun, pada tutorial kali ini, kita akan merancang sebuah infrastuktur Ubuntu yang dapat menjalankan metode CI/CD otomatis menggunakan sebuah open source github  adnanh / webhook.

Adnanh / webhook adalah sebuah open source github yang ditulis menggunakan bahasa pemrograman Go. Dengan aplikasi ini anda dapat merancang sebuah http endpoint yang dapat melakukan trigger dan eksekusi terhadap script CI/CD yang anda rancang. Baiklah, tahap-tahap untuk implementasi simple CI/CD ini dimulai dari implementasi Git dengan Repository Github, implementasi Adnanh / Webhook untuk pull repository, instalasi Supervisor untuk otomatisasi proses Webhook, dan konfigurasi Webhook dan pembuatan Docker Container.

1. Implementasi Git dengan Repository Github

Pada tahap ini kita akan mencoba menghubungkan repository Github kita dengan server Ubuntu yang kita gunakan. Jadi server Ubuntu akan melakukan “git pull” pada repository Github, melalui koneksi SSH ke repository anda. Anda dapat melihat langkah-langkah untuk implementasi Git Dengan Repository Github pada artikel Menghubungkan Git Repository anda dengan Github melalui SSH.

2. Implementasi Adnanh / Webhook untuk pull repository

Jika repository Git anda sudah terhubung dengan Github repository, langkah selanjutnya adalah melakukan otomatisasi proses “git pull” ketika repository anda mendapatkan update atau commit baru pada branch yang anda tentukan. Anda dapat melihat langkah-langkah implementasi Andnanh/Webhook dengan Github pada artikel Mengkonfigurasi Adnanh Webhook Dengan Github Webhook Pada Ubuntu Server.

3. Instalasi Supervisor untuk otomatisasi proses Webhook

Adnanh / Webhook adalah sebuah aplikasi yang ditulis menggunakan bahasa pemrograman Go. Untuk menjalankan aplikasi Adnanh / Webhook ini seperti sebuah service, kita harus meng-install dan menambahkan dengan aplikasi supervisor. Karna secara default aplikasi ini tidak dapat berjalan secara background dan harus dibuka secara manual saat ingin menjalankan aplikasi Adnanh / Webhook. Tutorial untuk menambahkan webhook pada aplikasi supervisor dapat anda lihat pada artikel Menginstall dan Menggunakan Supervisor Untuk Mengelola Service Webhook Pada Ubuntu.

4. Konfigurasi Webhook dan Pembuatan Docker Container

Setelah anda faham dan mengetahui langkah-langkah yang harus anda ketahui sebelumnya. Langkah berikutnya ada langkah inti dalam pembuatan Docker Compose dan script deployment webhook. Pertama-tama, kita siapkan Docker Compose yang akan kita gunakan untuk melakukan build service atau container kita. Contoh berikut adalah contoh dari Docker Compose sederhana menggunakan container PHP dan Nginx menggunakan Docker Image “trafex/php-nginx“. Simpan berkas tersebut dengan nama “compose.yml

version: '3.1'

services:

  projek-php-anda:
    image: trafex/php-nginx
    restart: always
    ports:
    - "8080:8080"
    volumes:
    - /var/www/dockerize/projek-php-anda:/var/www/html

networks:
  default:
    name: main-network
    external: true

Setelah anda membuat compose file. Langkah berikutnya adalah melakukan test apakah Docker Compose anda telah benar dengan perintah,

docker compose -f compose.yml up -d

Jika docker compose berhasil berjalan, maka output akan seperti dibawah ini.

[+] Running 1/0
 ? Container projek-php-anda-1  Running                     0.0s

Langkah berikutnya kita akan membuat script deployment webhook. Namun pertama-tama, kita akan membutuhkan script shell untuk melakukan proses git pull kemudian docker compose. Buat file shell baru dengan perintah,

nano ~/webhook/deploy-production-namawebsiteanda.sh

Isi perintah shell anda dengan

#!/bin/bash
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519
git pull
docker compose -f compose.yml up --build -d

Perintah shell diatas artinya kita akan melakukan ssh aad untuk mengakses repositori, kemudian melakukan git pull dari repository, dan langkah terakhir adalah memperbarui container kita dengan proses docker compose. Kemudian ubah shell tersebut menjadi executable dengan cara,

sudo chmod a+x ~/webhook/deploy-production-namawebsiteanda.sh

Setelah script deployment anda siap, langkah selanjutnya adalah menambahkan webhook pada konfigurasi adnanh/webhook anda. Edit konfigurasi webhook anda dengan,

nano ~/webhook/hooks-config.json

Setelah itu tambahkan konfigurasi anda,

[
  {
    "id": "deploy-production-namawebsiteanda",
    "execute-command": "/namauseranda/webhook/deploy-production-namawebsiteanda.sh",
    "command-working-directory": "/var/www/namawebsiteanda"
  }
]

Setelah menambahkan konfigurasi webhook anda, lakukan restart pada supervisor anda dengan cara masuk ke dalam terminal,

sudo supervisorctl

Kemudian restart prose anda dengan cara

supervisor> restart supervisor-webhook:supervisor-webhook_0

Dengan begitu proses webhook anda juga otomatis terupdate, dan melakukan re read terhadap rule webhook anda.

Sekian tutorial cara implementasi CI/CD secara sederhana dengan menggunakan webhook dan supervisor. Jika anda masih mengalami kebingungan, silahkan akses artikel yang berkaitan dengan Nginx, Adnanh/Webhook, dan Supervisor. Anda sudah dapat melakukan deploy aplikasi anda secara berkelanjutan setelah melakukan set up ini. Anda juga dapat melakukan beberapa tweak untuk menyesuaikan dengan kebutuhan anda. ​

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan.