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.
Dev | Staging | Production |
---|
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 modepush
pada branchstaging
- dan ketika ada perubahan pada folder
frontend
maka gitlab ci akan menjalankanscript
Jadi tinggal sesuaikan dengan kebutuhan pada environment masing-masing.
Gitu dulu lah yaaa