diff --git a/Dockerfile b/Dockerfile index d0c2912f..63d1f971 100644 --- a/Dockerfile +++ b/Dockerfile @@ -73,4 +73,4 @@ VOLUME ["/app/uploads"] EXPOSE 3000 -CMD ["/app/docker-entrypoint.sh"] \ No newline at end of file +CMD ["/app/docker-entrypoint.sh"] diff --git a/QWEN.md b/QWEN.md index 94dfaee8..fad68e29 100644 --- a/QWEN.md +++ b/QWEN.md @@ -232,33 +232,38 @@ Common issues and solutions: 6. Verify responsive design on different screen sizes ## Qwen Added Memories -- **GitHub Workflows**: Project ini memiliki workflow GitHub Action untuk deployment. User akan menangani workflow secara manual di GitHub. +- **GitHub Workflow Execution**: Project ini memiliki 3 workflow GitHub Action: +1. `publish.yml` - Build & push Docker image ke GHCR (manual trigger, butuh input: stack_env + tag) +2. `re-pull.yml` - Re-pull Docker image di Portainer (manual trigger, butuh input: stack_name + stack_env) +3. `docker-publish.yml` - Auto build & push saat ada tag versi v* + +Workflow bisa dijalankan via GitHub CLI: `gh workflow run -f param=value --ref branch` + +Setelah commit ke branch deployment (dev/stg/prod), otomatis trigger workflow publish + re-pull untuk deploy ke server. + - **Deployment Workflow Sistematis**: 1. **Version Bump** - Update `version` di `package.json` sebelum deploy (ikuti semver: major.minor.patch) 2. **Commit** - Commit perubahan + version bump dengan pesan yang jelas 3. **Push ke Branch** - Push ke branch target (biasanya `stg` untuk staging atau `prod` untuk production) -4. **Trigger publish.yml** - Gunakan GitHub API dengan: `ref: main`, `stack_env: stg`, `tag: ` +4. **Trigger publish.yml** - Gunakan GitHub API atau CLI dengan: `ref: main`, `stack_env: stg`, `tag: ` 5. **Tunggu publish selesai** - Workflow harus completed baru lanjut ke re-pull -6. **Trigger re-pull.yml** - Gunakan GitHub API dengan: `ref: main`, `stack_name: desa-darmasaba`, `stack_env: stg` +6. **Trigger re-pull.yml** - Gunakan GitHub API atau CLI dengan: `ref: main`, `stack_name: desa-darmasaba`, `stack_env: stg` Branch deployment: `stg` (staging) atau `prod` (production) Version format di package.json: `"version": "major.minor.patch"` -- **Auto Deploy After Push to deploy/stg**: Setelah push ke `deploy/stg`, otomatis trigger deployment workflow: -1. Bump version di `package.json` (increment patch) -2. Commit version bump -3. Trigger `publish.yml` via GitHub API: `ref=main`, `stack_env=stg`, `tag=` -4. Polling sampai publish workflow completed -5. Trigger `re-pull.yml` via GitHub API: `ref=main`, `stack_name=desa-darmasaba`, `stack_env=stg` +- **Deployment Workflow HARUS Sequential (Berurutan)**: -Cara trigger workflow via GitHub CLI: +Saat deploy ke stg atau prod, workflow TIDAK BOLEH dijalankan bersamaan. Harus menunggu yang pertama SELESAI total baru trigger yang kedua. + +**Urutan yang BENAR:** +1. ✅ **publish.yml** - Tunggu sampai SELESAI (status: ✓ success) +2. ✅ **Setelah publish selesai**, baru trigger **re-pull.yml** + +**JANGAN trigger keduanya bersamaan!** Ini akan menyebabkan race condition karena re-pull akan menarik image yang belum selesai di-build. + +**Cara cek workflow selesai via GitHub CLI:** ```bash -# Trigger publish -gh workflow run publish.yml --ref main -f stack_env=stg -f tag= - -# Cek status (polling) -gh run watch - -# Trigger re-pull -gh workflow run re-pull.yml --ref main -f stack_name=desa-darmasaba -f stack_env=stg +gh run watch +# Tunggu sampai ada checkmark ✓ ```