docs(#9): close out 0.3 release #11

Merged
KofTwentyTwo merged 1 commits from feature/GH-9-release-closeout into develop 2026-07-12 15:02:53 +00:00
5 changed files with 66 additions and 102 deletions

No files matched your search

+16
View File
@@ -0,0 +1,16 @@
# Repository instructions
Read `CLAUDE.md`, `CONTRIBUTING.md`, `docs/SESSION-STATE.md`, and `docs/TODO.md`
before substantive work. Munitor is a CircleCI orb: source changes belong under
`src/`, generated packed scripts must remain synchronized, and consumer behavior
must be covered by BATS fixtures and assertions.
Use feature branches targeting `develop`; `main` is release-only. Run `make all`
before opening a pull request and `make validate` when the CircleCI CLI is
available. Publish development snapshots from feature or `develop`; publish
stable orb versions only from semantic version tags on `main`.
For deployment changes, preserve the established contract: repository-owned
Dockerfiles are opt-in, consolidated GitOps paths are repository-relative
`kustomization.yaml` files, and `production_only` prevents non-main write-back.
Never put credentials in manifests, fixtures, logs, or documentation.
+9 -1
View File
@@ -29,11 +29,19 @@ GitHub Issues (org: KofTwentyTwo). Commit format: `feat(#N): description` or `Cl
- Namespace: `kof22`
- Orb: `kof22/munitor`
- Latest stable: `kof22/munitor@0.2.0`
- Latest stable: `kof22/munitor@0.3.0`
- Dev snapshot: `kof22/munitor@dev:snapshot`
`0.3.0` includes first-class pnpm support, repository-owned Dockerfiles for
`node-webapp`, and consolidated Kustomize GitOps write-back with optional
production-only behavior and bounded push-race retries.
## Session Continuity
- Session state: `docs/SESSION-STATE.md`
- Active tasks: `docs/TODO.md`
- Plans: `docs/PLAN-*.md`
Read `AGENTS.md` and `CONTRIBUTING.md` before changing orb behavior. Feature
branches target `develop`; release branches promote to `main`, and stable orb
publication is driven by a `vX.Y.Z` tag.
+16 -16
View File
@@ -20,7 +20,7 @@ This file is identical across all repos:
version: 2.1
setup: true
orbs:
munitor: kof22/munitor@1
munitor: kof22/munitor@0.3
workflows:
setup:
jobs:
@@ -53,7 +53,7 @@ Munitor validates branch names and will fail on non-conforming names.
| Context | Secrets | Used By |
|---------|---------|---------|
| `ghcr` | `GHCR_TOKEN`, `GHCR_USER` | Docker push to GitHub Container Registry |
| `ghcr` | `GHCR_TOKEN`, `GHCR_USERNAME` | Docker push to GitHub Container Registry |
| `github` | `GITHUB_TOKEN` | Git operations, CD repo updates, SBOM, GitHub Releases |
| `sonarcloud` | `SONAR_TOKEN` | SonarCloud analysis |
| `nvd` | `NVD_API_KEY` | OWASP dependency check (Java only, optional) |
@@ -68,7 +68,7 @@ For Node.js/Next.js applications with Docker deployment.
```yaml
pipeline: node-api
orb_version: dev:snapshot
orb_version: "0.3"
image_name: my-app
docker:
registry: ghcr.io/KofTwentyTwo
@@ -81,7 +81,7 @@ contexts:
```yaml
pipeline: node-api
orb_version: dev:snapshot
orb_version: "0.3"
image_name: my-app
node_version: "22" # default: 20
@@ -145,7 +145,7 @@ For Node.js applications that provide their own Dockerfile (unlike `node-api` wh
```yaml
pipeline: node-webapp
orb_version: dev:snapshot
orb_version: "0.3"
image_name: my-webapp
docker:
registry: ghcr.io/KofTwentyTwo
@@ -159,7 +159,7 @@ contexts:
```yaml
pipeline: node-webapp
orb_version: dev:snapshot
orb_version: "0.3"
image_name: my-webapp
node_version: "22" # default: 20
@@ -227,7 +227,7 @@ For Java/Maven applications with Docker deployment.
```yaml
pipeline: java-webapp
orb_version: dev:snapshot
orb_version: "0.3"
image_name: my-service
docker:
registry: ghcr.io/KofTwentyTwo
@@ -241,7 +241,7 @@ contexts:
```yaml
pipeline: java-webapp
orb_version: dev:snapshot
orb_version: "0.3"
image_name: my-service
java_version: "21" # default: 21
@@ -287,7 +287,7 @@ For Terraform/Terragrunt infrastructure repos.
```yaml
pipeline: terraform
orb_version: dev:snapshot
orb_version: "0.3"
terraform:
path: terraform/
```
@@ -296,7 +296,7 @@ terraform:
```yaml
pipeline: terraform
orb_version: dev:snapshot
orb_version: "0.3"
terraform:
path: terraform/ # default: terraform/
live_path: terraform/live # default: terraform/live
@@ -318,14 +318,14 @@ For CD/GitOps repositories containing Kubernetes manifests, Kustomize overlays,
```yaml
pipeline: validate-cd-repo
orb_version: dev:snapshot
orb_version: "0.3"
```
**Full config:**
```yaml
pipeline: validate-cd-repo
orb_version: dev:snapshot
orb_version: "0.3"
kustomize:
version: "5.5.0" # default: 5.5.0
@@ -350,14 +350,14 @@ For ArgoCD app-of-apps repositories that use environment directories (`envs/`) i
```yaml
pipeline: argocd-apps
orb_version: dev:snapshot
orb_version: "0.3"
```
**Full config:**
```yaml
pipeline: argocd-apps
orb_version: dev:snapshot
orb_version: "0.3"
kustomize:
version: "5.5.0" # default: 5.5.0
@@ -382,7 +382,7 @@ For SDK packaging and GitHub Releases. Triggered by semver tags (`v1.2.3`).
```yaml
pipeline: sdk-distribution
orb_version: dev:snapshot
orb_version: "0.3"
contexts:
github: github
```
@@ -516,7 +516,7 @@ Default endpoint: `GET /api/health` on port 3000 (node-api, node-webapp) or 8080
## Troubleshooting
**"Missing required fields: orb_version"** -- Add `orb_version` to your `.munitor.yml`. Use `dev:snapshot` for pre-release testing or `1` once a stable release is published.
**"Missing required fields: orb_version"** -- Add `orb_version` to your `.munitor.yml`. Use `dev:snapshot` for unreleased feature testing or `0.3` for the current stable line.
**"munitor_header: command not found"** -- You're using an older orb version. Update to `dev:snapshot` or wait for the next stable release.
+19 -77
View File
@@ -1,83 +1,25 @@
# Munitor Session State
# Munitor session state
## Last Updated
2026-03-27
## Current status
## Current Status
Feature branch `feature/GH-5-pnpm-support` is at `7519d62`, pushed to origin. 17 commits ahead of `develop`. Dev snapshot published: `kof22/munitor@dev:snapshot`. All 219 tests pass. Ready for PR to develop when consumer repo validation confirms the fixes work.
The `develop` branch contains the complete `0.3.0` feature set. PR #6 added
first-class pnpm support and the Obsidian pipeline, PR #8 added opt-in
repository Dockerfile preservation for `node-webapp`, and PR #10 added
consolidated Kustomize GitOps write-back with production-only controls and
bounded push-race retries. Investing in Chester and QRun marketing both proved
the release path through CircleCI, GHCR, `KofTwentyTwo/cluster-gitops`, and
ArgoCD.
## Branch
- `feature/GH-5-pnpm-support` at `7519d62` (pushed, 17 commits ahead of develop)
- `develop` at `af15015`
- `main` at `1e558c1` (2 commits ahead of develop)
## Release state
## Tags / Releases
- `v0.1.0` at `9247dcc` - Initial stable release (7 pipeline types, 362+ tests)
- `v0.1.1` at `5f70823` - Supplemental images, health check, Trivy bump (505+ tests)
- `v0.1.2` at `d766747` - Overridable org defaults (PR #1)
- `v0.2.0` at `af15015` - Gradle-webapp pipeline type (PR #2), marked as Latest
- Latest stable target: `kof22/munitor@0.3.0`
- Stable consumer pin: `kof22/munitor@0.3`
- Development aliases: `dev:<commit>` and `dev:snapshot`
- Default branch: `develop`; `main` is release-only
- Release tag: `v0.3.0`
All four have GitHub Releases.
## Verification
## Key Facts
- GitHub org: KofTwentyTwo (repo: KofTwentyTwo/Munitor)
- CircleCI namespace: kof22 (orb: kof22/munitor)
- Latest stable orb: kof22/munitor@0.2.0
- Dev snapshot: kof22/munitor@dev:snapshot (pnpm support, 2026-03-27)
- Pipeline types (8): java-webapp, gradle-webapp, node-api, node-webapp, terraform, validate-cd-repo, sdk-distribution, argocd-apps
- CI workflows: lint-pack (all), snapshot (develop/feature), test-deploy (tags only)
- Default branch: develop (main is release-only)
- Test count: 219 assertions passing (across 7 test files)
- GitHub Issue: #5 (first-class pnpm support)
## pnpm Support (GH-5) Implementation Summary
### What was done (17 commits on feature/GH-5-pnpm-support)
**Phase 1 - Mechanical rename:**
- Renamed all `npm_*` jobs/commands/scripts to `node_*` (except `npm_auth` which stays)
- Updated all templates, tests, and CONTRIBUTING.md references
**Phase 2 - Package manager threading:**
- `package_manager` parameter threaded through: `install_node` -> `node_install_deps` -> `node_test` -> cache commands -> `node_build_and_test` job -> all templates
- Corepack activation in `install_node.sh` for pnpm/yarn (version detection from `packageManager` field or `engines`)
- `node_install_deps.sh` rewritten with npm/pnpm branching + Prisma auto-detection
- `node_test.sh` falls back to `pnpm test` for pnpm (instead of `npx jest`)
- Cache commands use PM-specific lockfile checksums and cache paths
**Phase 3 - Supplemental features:**
- `run_test_setup.sh` supports inline commands (not just file paths)
- `generate_dockerfile.sh` has pnpm Dockerfile variants for node-api (nextjs + express) and node-webapp
- Prisma auto-detection runs `prisma generate` after install for all PMs
**Phase 4 - Secondary job fixes (latest commit):**
- All secondary jobs (code-quality, coverage, e2e, security-scan, sonar, sbom) now run `install_node` with `node_version` + `package_manager` to bootstrap corepack/pnpm in their executors
- `node_coverage_check` supports configurable `coverage_summary_path` with glob patterns for monorepo weighted-average aggregation
- New `.munitor.yml` config: `test.coverage.summary_path` (default: `coverage/coverage-summary.json`)
### Design decisions
- Spec: `ClaudeCode/Munitor/docs/2026-03-27-pnpm-support-design.md`
- Plan: `ClaudeCode/Munitor/docs/2026-03-27-pnpm-support-plan.md`
- `npm_auth` NOT renamed (genuinely npm-registry-specific, .npmrc auth works for pnpm too)
- Monorepo Dockerfile generation out of scope (user provides custom Dockerfile)
- Yarn support limited to corepack plumbing (no yarn-specific testing)
- Coverage monorepo: glob + weighted average rather than auto-search
## Consumer Repos - Orb Version Status (updated 2026-03-27)
- `KofTwentyTwo/Concilium` - gradle-webapp, develop, **@0.2**, green (PR #41 merged)
- `KofTwentyTwo/Website-Backend` - java-webapp, develop, **@0.2** (PR #44 merged)
- `KofTwentyTwo/Website-Frontend` - node-webapp, develop, **@0.2** (PR #6 merged) - testing pnpm support via dev:snapshot
- `KofTwentyTwo/k8s-app-of-apps` - argocd-apps, develop, green (still on @0.1, compatible)
- `KofTwentyTwo/Website-CD` - validate-cd-repo, main, green (still on @0.1, compatible)
- `KofTwentyTwo/makers4` - java-webapp, main, **needs CircleCI follow**
- `KofTwentyTwo/terraform-proxmox-talos` - terraform, develop, **needs CircleCI follow**
## Next Steps
- Validate dev:snapshot on Website-Frontend (pnpm consumer) - confirm coverage job now works without corepack workaround
- Test `coverage_summary_path` glob if Website-Frontend is a monorepo
- Create PR #3 targeting develop once consumer validation passes
- Merge and release v0.3.0
- Bump consumer repos to @0.3
- Follow makers4 and terraform-proxmox-talos on CircleCI (manual UI step)
- Fix Website-Frontend ESLint error (DebugPanel.tsx:73 setState in effect, pre-existing)
- Adopt supplemental images on a consumer repo (e.g., me-health-portal with Liquibase)
Run `make all` before release. The stable tag must publish successfully through
CircleCI before consumer repositories move from immutable development pins to
`0.3`.
+6 -8
View File
@@ -2,17 +2,15 @@
## Pending
- [ ] Validate dev:snapshot on Website-Frontend (confirm pnpm coverage job fix)
- [ ] Create PR #3 for pnpm support (feature/GH-5-pnpm-support -> develop)
- [ ] Release v0.3.0 after PR merge
- [ ] Bump consumer repos to @0.3
- [ ] Follow makers4 and terraform-proxmox-talos on CircleCI (manual step)
- [ ] Fix Website-Frontend ESLint error (DebugPanel.tsx:73 setState in effect)
- [ ] Adopt supplemental images on a consumer repo (e.g., me-health-portal with Liquibase)
- [ ] Bump k8s-app-of-apps and Website-CD to @0.2+ (optional, @0.1 still compatible)
- [ ] Follow makers4 and terraform-proxmox-talos on CircleCI when those repos are next active.
- [ ] Adopt supplemental images on an appropriate consumer.
## Completed
- [x] Prove consolidated production write-back with Investing in Chester and QRun marketing.
- [x] Release v0.3.0 and move the verified consumers to the stable 0.3 line.
- [x] Merge repository Dockerfile preservation and consolidated GitOps write-back.
- [x] Validate first-class pnpm support and merge PR #6.
- [x] Add opt-in repository Dockerfile preservation for node-webapp (GH-7)
- [x] Implement first-class pnpm support (GH-5, 17 commits, 219 tests)
- [x] Rename all npm_* orb components to node_* (backward-incompatible, pre-1.0)