Halo, kali ini saya akan berbagi pengalaman mengenai CI/CD untuk deploy aplikasi Laravel, CI adalah Continous Integration proses otomatis untuk menjalankan build, testing, untuk mendeteksi bug lebih awal, sedangkan CD adalah Continous Deployment atau Continous Delivery proses deployment ke server yang dilakukan secara otomatis
Alur CI/CD sendiri terdiri dari
1. Developer push codingan ke repository baik github/gitlab
2. Kemudian pipeline akan menjalankan proses sesuai dengan aturan
yang dibuat misalkan proses build, testing, code scanner
3. Jika proses tahap ke 2 selesai tidak terdapat error, maka proses
selanjutnya deployment ke server
Pembahasan kali ini focus kita adalah deployment aplikasi Laravel yang berjalan dengan docker dengan menggunakan php8.2, nginx sebagai webserver, kemudian menggunakan repository gitlab serta gitlab-ci untuk proses CI/CD nya. Berikut untuk Langkah-langkahnya
Langkah #1 : Pastikan aplikasi
sudah dibuild di server dengan menggunakan docker dan aplikasi harus wajib sudah
masuk ke dalam repository, dan source code yang terdapat di server diambil dari
repository dengan perintah
|
# git clone git@gitlab.com:whyirfan/2025-laravel.git |
Kemudian masukan public_key
server ke repository Profile – Preferences – SSH Keys
Langkah #2 : Jika aplikasi sudah dipastikan berjalan dan tidak ada error maka lakukan
instalasi gitlab-runner sebagai agent eksekusi untuk menjalankan pipeline yang
ada di gitlab-ci, untuk instalasinya bisa membaca situs resmi gitlab-runner
Langkah #3 : Setelah selesai
instalasi gitlab-runner, selanjutnya lakukan registrasi gitlab-runner
|
#gitlab-runner register |
Kemudian copy token yang terdapat
pada repository tepatnya setting – CI/CD – Runners seperti gambar
berikut
Kemudian lengkapi perintah sesuai
pada gambar berikut
Pada pilihan executor terdapat
beberapa pilihan, disini saya menggunakan docker sebagai executor dan image
alpine:latest. Kemudian tag yang digunakan adalah devel, bisa
disesuaikan Kembali sesuai dengan keinginan.
Jika sudah dilakukan instasli dan
konfigurasi yang sesuai, lakukan pengeceka pada repository setting – CI/CD –
Runners maka akan tampil seperti pada gambar berikut
Langkah #4 : Buatlah file yang Bernama
.gitlab-ci.yml , file ini berfungsi sebagai aturan yang akan dijalankan
yang biasanya berisi build dan deploy. Berikut untuk isi file
.gitlab-ci.yml
|
stages: - deploy deploy-testing: stage: deploy variables: TARGET_IP: ${TARGET_IP} TARGET_PORT: ${TARGET_PORT} TARGET_USER: ${TARGET_USER} TARGET_DIR: ${TARGET_DIR} image: alpine:latest before_script: - apk update - apk add openssh - eval $(ssh-agent -s) - echo "${KEY}"
| tr -d '\r' | ssh-add - - mkdir -p ~/.ssh - chmod 700 ~/.ssh - echo -e "Host
*\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config - chmod 600 ~/.ssh/config script: - echo "${TARGET_DIR}" - ssh -p${TARGET_PORT} ${TARGET_USER}@${TARGET_IP}
"cd ${TARGET_DIR} && git pull origin main && docker
compose up --build -d" only: - main tags: - devel |
Pada file .gitlab-ci berisi
proses build+deploy yang di jalankan pada 1 step, yang mana prosesnya itu
menggunakan ssh sebagai perantara untuk melakukan pull repository, build dan
running aplikasi dengan docker. Pada file itu juga terdapat beberapa variable
yang perlu disesuaikan, isi variable sendiri bisa di inputkan pada menu setting
– CI/CD – Variables, contohnya seperti pada gambar berikut
TARGET_IP -> IP Address server
Aplikasi (192.168.10.5)
TARGET_PORT -> Port SSH (22)
TARGET_USER -> User yang digunakan untuk ssh (irfan)
TARGET_DIR -> Directory penyimpanan aplikasi (/home/irfan/2025-laravel)
KEY -> isi dari file .ssh/id_rsa (didapat dari ssh-keygen)
Langkah #5 : Hasil dari perubahan
yang dilakukan di local kemudian push ke reposiroty dengan perintah
|
#git add. #git push |
Langkah #6 : Pastikan pipeline
sudah berjalan dan tidak terdpat error pada menu Builds – Pipeline Jika berhasil maka akan centang hijau dan
jika gagal maka akan tanda silang merah
Optional jika clone menggunakan
https Buat Token untuk digunakan agar ketika melakukan pull tidak perlu
memasukan username dan password gitlab.
Kemudian salin token dan masukan
ke dalam file .git/config yang terdapat pada server cat 2025-laravel/.git/config dengan format https://user:Token_git@gitlab.com/whyirfan/2025-laravel.git

0 Komentar