40 lines
1.9 KiB
Markdown
40 lines
1.9 KiB
Markdown
# Deployment
|
|
|
|
Docker images are built via `.github/workflows/publish.yml` and pushed to GHCR (`ghcr.io`). Portainer redeploys via `.github/workflows/re-pull.yml`. Supports `dev`, `stg`, and `prod` stacks.
|
|
|
|
The Dockerfile uses a two-stage build: Bun builder → Bun runner (non-root user, port 3000).
|
|
|
|
## Git Remote Structure
|
|
|
|
| Remote | URL | Purpose |
|
|
|--------|-----|---------|
|
|
| `origin` | wibugit.wibudev.com/wibu/sistem-desa-mandiri | Repo kerja tim |
|
|
| `build` | github.com/bipprojectbali/desa-plus | Repo deployment (trigger CI/CD) |
|
|
|
|
**Branch mapping:**
|
|
- `origin/staging` — branch integrasi tim (bukan deployment target)
|
|
- `build/stg` — branch deployment stg (trigger publish image + Portainer repull)
|
|
- `build/prod` — branch deployment prod
|
|
- `build/dev` — branch deployment dev
|
|
|
|
## Deploy to STG Flow
|
|
|
|
Cukup jalankan MCP `deploy-stg` — handles otomatis: cek migrasi → bump version → commit → push ke `build/stg` → trigger publish workflow (`ref: stg`) → tunggu selesai → trigger repull Portainer → verify version via `BASE_URL${VERSION_PATH}`.
|
|
|
|
> `origin` tidak punya branch `stg` (hanya `staging`). "stg" selalu merujuk ke `build/stg`.
|
|
|
|
## MCP `deploy-stg`
|
|
|
|
Lokasi: `.mcp/deploy-stg/server.ts`. Berkomunikasi langsung dengan GitHub REST API (tidak butuh `gh` CLI), hanya perlu `git` & `prisma` lokal.
|
|
|
|
**Env vars** (di `.mcp.json` atau `.env`):
|
|
- `GH_TOKEN` — PAT dengan scope `repo` + `workflow` untuk trigger Actions
|
|
- `GH_URL` — repo build target, format `owner/repo` atau full URL
|
|
- `BASE_URL` — base URL stg untuk verifikasi versi
|
|
- `VERSION_PATH` — endpoint cek versi (default `/api/version-app`)
|
|
- `STACK_NAME` — nama stack Portainer
|
|
|
|
**Tools:** `deploy`, `publish`, `repull`, `run_status`, `check_version`.
|
|
|
|
**Penting:** workflow `publish.yml` & `re-pull.yml` di-trigger dengan `ref: stg` agar `actions/checkout@v4` checkout dari branch `stg`, bukan default branch (`main`).
|