Deploy Laravel with CI/CD gitlab

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 commit -m “penambahan konfigurasi ci/cd pada file gitlab-ci.yml”

#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

 

Semoga bermanfaat, Terimakasih

Posting Komentar

0 Komentar