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
/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.
Setting Konfigurasi Project
Buka Project anda gitlab, klik Settings -> CI/CD -> Variables
klik Add Variable
Pertama
Key : SSH_PRIVATE_KEY
Value : Isi file ~/.ssh/deploy-id_rsa
Kedua
Key : IP_SERVER
Value : IP Server anda
Di menu CI/CD tersebut, lihat Deploy Keys
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"
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
.
Buka domain anda
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
Halo mas, disini terdapat error, /bin/bash: line 134: ssh: command not found
itu kenapa ya?
coba liat code lengkapnya
sama aku juga bang. bisa di bantu dong
selamat siang, mau tanya dong bang
kalo CI 3 itu bsa auto deploy kek gni atau tdk yaaah???
Bisa, caranya mirip :D