| name | awcms-micro-release |
| description | Jalankan proses rilis AWCMS-Micro dengan Changesets. Gunakan saat diminta merilis versi, bump version, generate CHANGELOG, membuat tag vX.Y.Z, atau memeriksa changeset pending. Sesuai kebijakan SemVer doc 09. |
AWCMS-Micro — Release (Changesets)
Ikuti docs/awcms-micro/09_roadmap_repository_commit.md §Versioning dan .changeset/README.md. Sejak Issue #692 (epic #679, platform-hardening), langkah dari "push tag" sampai "GitHub Release + image + SBOM + signature + provenance" sudah otomatis lewat .github/workflows/release.yml — lihat docs/awcms-micro/release-process.md untuk detail lengkap (SBOM tool, keyless signing, attestation, environment approval, dry-run/rehearsal, verifikasi konsumen, rollback/yank). Skill ini tetap mendokumentasikan langkah lokal (changeset → version bump → tag) yang masih manual.
Alur rilis
flowchart LR
A[changeset:status<br/>cek pending] --> B[Validasi lokal:<br/>bun run check]
B --> C[changeset:version<br/>bump + CHANGELOG]
C --> D[Review diff CHANGELOG<br/>+ package.json]
D --> E[Commit chore release vX.Y.Z]
E --> F[changeset:tag → push --tags]
F --> G[release.yml: validate job<br/>+ build job SBOM x2]
G --> H[release environment<br/>approval gate]
H --> I[sign-attest-publish job:<br/>cosign sign + attest + publish]
Prosedur
bun run changeset:status — pastikan ada changeset pending dan tingkat bump sesuai SemVer (MAJOR breaking / MINOR fitur / PATCH fix). Bila kosong tapi ada perubahan perilaku → minta changeset dulu, jangan rilis. Setiap PR yang membutuhkan changeset sudah ditegakkan otomatis oleh .github/workflows/changesets.yml (bun run changesets:policy:check) — pending changeset di titik ini seharusnya sudah lengkap, bukan ditemukan baru saat rilis.
- Validasi lokal:
bun run check (lint, docs, contracts, typecheck, test, build — release.yml's validate job re-runs persis perintah yang sama, dan sebenarnya lebih ketat dari ci.yml's quality job hari ini karena quality belum menjalankan i18n:pot:check/config:docs:check/logging:lint:check, lihat release-process.md §validate job); untuk rilis production tambah bun run production:preflight (gate doc 07 — critical finding memblokir). bun run check juga menjalankan extension:check (Issue #741/ADR-0015) — bila repo turunan Anda mem-fork pipeline rilis ini dan sudah mempublikasikan extension.manifest.json, langkah ini memverifikasi manifest itu tetap kompatibel dengan versi/kontrak/checksum migration rilis yang sedang di-tag, tanpa gerbang terpisah untuk dikonfigurasi.
bun run changeset:version — konsumsi changeset → bump package.json + entri CHANGELOG.md. Selalu lewat bun run, jangan panggil changeset version langsung: bun run version chain juga menjalankan scripts/changelog-heading-brackets.ts, yang membungkus heading versi jadi ## [X.Y.Z] (format Keep a Changelog yang ditegakkan release:verify) — @changesets/cli sendiri selalu menulis heading polos ## X.Y.Z tanpa kurung, dan itu yang bikin tag v0.3.0 (rilis tag-push pertama repo ini, 2026-07-18) gagal di validate job sebelum image sempat dibangun. Lihat release-process.md §validate job dan §Rollback (kasus "validate-job failure never published anything") untuk detail insidennya.
- Review diff; pastikan versi cocok peta doc 09 (0.1.0 Foundation … 1.0.0 production MVP).
- Commit:
chore(release): vX.Y.Z (sertakan CHANGELOG + package.json + penghapusan file changeset), push ke main.
bun run changeset:tag lalu git push --tags. Ini memicu .github/workflows/release.yml: guard ancestor-of-main, bun run release:verify (versi/CHANGELOG/changeset tersisa harus konsisten), full quality gate, lalu — setelah disetujui lewat release environment (lihat doc release-process.md §Environment approval) — build image, dua SBOM CycloneDX (source + image), checksums, cosign sign keyless, actions/attest-build-provenance/attest-sbom, push ghcr.io/ahliweb/awcms-micro, dan gh release create dengan asset terlampir.
- Jangan lagi menjalankan
gh release create manual — itu sekarang bagian dari release.yml; menjalankannya manual sebelum workflow selesai akan bentrok dengan asset yang coba di-attach otomatis.
Aturan
- Jangan rilis dari branch selain
main (atau release/vX.Y.Z sesuai doc 09) — release.yml menolak tag yang bukan ancestor origin/main.
- Jangan edit CHANGELOG entri lama; koreksi lewat entri baru.
- Pra-1.0.0: minor boleh memuat penyesuaian belum stabil; tetap catat breaking di ringkasan changeset.
- Tag
vX.Y.Z harus menunjuk commit rilis, bukan commit sesudahnya — bun run release:verify menolak bila package.json/CHANGELOG tidak cocok dengan tag.
- Sebelum tag rilis production pertama, jalankan rehearsal (
gh workflow run release.yml --ref main) minimal sekali dan pastikan reviewer benar-benar approve gerbang environment release — lihat doc release-process.md §Dry-run/rehearsal.
Verifikasi
- Sebelum
git push --tags: simulasikan gate validate job secara lokal — RELEASE_TAG_REF=vX.Y.Z bun scripts/release-verify.ts — harus mencetak release:verify OK. Ini murni pembacaan file lokal (tidak butuh git/network), jadi bisa dijalankan sebelum push apa pun; menangkap persis kegagalan v0.3.0 di atas tanpa perlu menunggu CI.
git tag --points-at HEAD menunjukkan tag baru; CHANGELOG punya seksi versi; package.json versi sama dengan tag.
- Setelah
release.yml selesai: gh attestation verify oci://ghcr.io/ahliweb/awcms-micro:vX.Y.Z --owner ahliweb dan cosign verify ... (perintah lengkap di release-process.md §Verification) — tidak butuh akses repo secret.