Membuat autodeploy (CI/CD) untuk Codeigniter di Gitlab tidak susah, yang terpenting kita tau cara manual installnya, karena cara manual inilah yang akan kita jadikan acuan membuat otomatisasinya. Pembuatan autodeploy untuk bahasa PHP tidak terlalu jauh beda, tinggal disesuaikan beberapa tahap untuk masing-masing framework. Autodeploy tidak begantung ke framework, jadi bisa saja dibuat untuk native PHP.

Untuk deploy ke production server kita akan menggunakan SSH key, agar prosesnya bisa otomatis, dan cara ini yang paling aman. Beberapa hal yang perlu diketahui sebelumnya

Root folder codeigniter : /var/www/codeigniter.jaranguda.com
Domain : codeigniter.jaranguda.com
Git project : git@gitlab.com:jarangudacom/codeigniter4.git
Script Deploy : /home/jaranguda/scripts/deploy/codeigniter.sh

Buat SSH Key Baru

Dari Linux generate key baru dengan

ssh-keygen -t rsa -b 4096 -N "" -f ~/.ssh/deploy-id_rsa -q

file yang akan kita simpan di Gitlab adalah ~/.ssh/deploy-id_rsa, file ini berisi private key. Sementara untuk di server ~/.ssh/deploy-id_rsa.pub, copy isi file deploy-id_rsa.pub, letakkan didalam file ~/.ssh/authorized_keys di server anda.
isi public key ssh

Setting Konfigurasi Project

Buka Project anda gitlab, klik Settings -> CI/CD -> Variables
gitlab ci cd
klik Add Variable

Pertama
Key : SSH_PRIVATE_KEY
Value : Isi file ~/.ssh/deploy-id_rsa

Kedua
Key : IP_SERVER
Value : IP Server anda
variable ci cd gitlab

Di menu CI/CD tersebut, lihat Deploy Keys
public key gitlab
Ambil public key SSH dari server anda, isinya simpan di kolom key. Ini tujuannya agar server bisa mendownload berkas git dari project ini.

Konfigurasi di Server

Di server sendiri pastikan sudah terinstall PHP, MySQL dan Composer

Untuk pertama kali cloning repository dari gitlab, ke root folder

git clone git@gitlab.com:jarangudacom/codeigniter4.git /var/www/codeigniter.jaranguda.com

proses ini hanya perlu satu kali, karena selanjutnya agar dijalankan oleh script codeigniter.sh

git clone git@gitlab.com:jarangudacom/codeigniter4.git /var/www/codeigniter.jaranguda.com
#jalankan composer
composer install --prefer-dist --no-progress --no-suggest

di folder /var/www/codeigniter.jaranguda.com

copy env .env

edit file .env tersebut, sesuaikan dengan dibawah ini

CI_ENVIRONMENT = production
app.baseURL = 'http://codeigniter.jaranguda.com/'

Buat file baru /home/jaranguda/scripts/deploy/codeigniter.sh yang berisi

cd /var/www/codeigniter.jaranguda.com
git pull
git reset --hard origin/master
composer install --prefer-dist --no-progress --no-suggest
chown www-data:www-data -R /var/www/codeigniter.jaranguda.com/writable

File gitlab-ci.yml

Buat .gitlab-ci.yml di project anda, contoh sederhananya

image: debian:latest
 
before_script:
     - mkdir -p ~/.ssh
     - echo -e "$SSH_PRIVATE_KEY" > ~/.ssh/id_rsa
     - chmod 600 ~/.ssh/id_rsa
     - echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config
 
deploy:
  script:
    - ssh -i ~/.ssh/id_rsa root@$IP_SERVER "bash /home/jaranguda/scripts/deploy/codeigniter.sh"

isi autodeploy gitlab

di file diatas terdapat /home/jaranguda/scripts/deploy/codeigniter.sh, file inilah yang nanti melakukan pull dari git dan deploynya.

setelah mengupdate file .gitlab-ci.yml, Gitlab pipeline akan segera jalan, dan bisa dilihat
pipeline sukses.

Buka domain anda
codeigniter yang terdeploy

Penutup

Cara ini masih sederhana, yang diutamakan adalah konsep cara membuat Auto Deploy di Gitlab. Setelah tahap ini selesai bisa ditambah dengan berbagai macam testing

Join the Conversation

5 Comments

Your email address will not be published. Required fields are marked *

  1. Halo mas, disini terdapat error, /bin/bash: line 134: ssh: command not found
    itu kenapa ya?