Melakukan Deploy ketika ada Perubahan pada Folder Menggunakan GitLab CI

Nov 22, 2022 min read

Trigger folder

Yakkk

Again-again semua catatan yang telah tertulis di web ini murni dari sudut pandang sang penulis ya, jadi apabila ada perbedaan ya wajar dong.

Oke langsung ke contoh kasus, biasanya untuk depoyment menggunakan metode gitfow akan ada proses trigering untuk melakukan suatu aksi ketika sudah merged ke salah satu branch. Contoh apabila ada merged ke branch staging, maka akan triggering ke webhook yang ada di jenkins untuk deployment pada service yang berada pada environment staging. Begitupun jika ada merged pada branch production akan melakukan hal yang sama.

DevStagingProduction

Namun bagaimana jika dalam suatu repo yang terdapat pada gitlab memilik banyak service? dan kita hanya ingin melakukan deployment pada service yang berada pada folder tertentu saja? Inilah jawabannya :))

Project_repository
|____Frontend
|    |___Readme.md
|        |___app/
|____Backend
|    |___Readme.md
|        |___app/

Nah semisal kita memiliki contoh struktur folder seperti diatas, semisal suatu aplikasi dijalankan melalui folder Frontend. Kita hanya akan melakukan deployment ketika ada perubahan pada Frontend saja. Maka yang perlu dilakukan pada config .gitlab-ci.yml adalah sebagai berikut

before_script:
  - your_command_before_run_script

stages:
  - deploy

deploy_frontend:
  stage: deploy
  rules:
    - if: $CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH == "staging"
      changes:
        - frontend/**/*
  script: 
    - your_command_to_deploy_app ex: curl jenkins url webhook

Keteragan:

  • pada rules diatas menggunakan $CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH == "staging" itu berarti ketika ada mode push pada branch staging
  • dan ketika ada perubahan pada folder frontend maka gitlab ci akan menjalankan script

Jadi tinggal sesuaikan dengan kebutuhan pada environment masing-masing.

Gitu dulu lah yaaa