Commit Graph
116 Commits
Author SHA1 Message Date
james.maesandCodex 77cdf931c2 fix(ci): carry refreshed snapshot dependencies with build artifacts
Overlay mutable external SNAPSHOT dependencies as well as locally installed reactor outputs so downstream jobs do not read older snapshots from the immutable cache.

Co-Authored-By: Codex <noreply@openai.com>
Signed-off-by: James Maes <james@kof22.com>
2026-10-19 11:02:15 -05:00
james.maesandCodex d7c278b344 fix(ci): preserve required Java PR check name
Give the differently parameterized production build a distinct name so CircleCI retains build-and-test for pull requests.

Co-Authored-By: Codex <noreply@openai.com>
Signed-off-by: James Maes <james@kof22.com>
2026-10-19 10:46:38 -05:00
james.maesandCodex c8fd974bfd perf(ci): bound Maven caches and remove duplicate setup
Keep restore and save keys stable across release version rewrites, avoid inherited cross-version caches, skip unused OWASP setup, upload test results once and pack the orb once before gated publication.

Co-Authored-By: Codex <noreply@openai.com>
Signed-off-by: James Maes <james@kof22.com>
2026-10-19 10:40:43 -05:00
james.maes 6cd50b0a90 Merge pull request #44 from KofTwentyTwo/release/0.3.8-backmerge
chore(release): back-merge Munitor 0.3.8
2026-10-19 09:37:14 -05:00
james.maes 5d4a9ea420 Merge pull request #43 from KofTwentyTwo/release/0.3.8
chore(release): publish Munitor 0.3.8
v0.3.8
2026-10-19 09:28:24 -05:00
james.maesandCodex f402fb8347 chore(release): prepare Munitor 0.3.8
Co-Authored-By: Codex <noreply@openai.com>
Signed-off-by: James Maes <james@kof22.com>
2026-10-19 09:21:59 -05:00
james.maes 11d5704b47 Merge pull request #42 from KofTwentyTwo/feature/fresh-supplemental-images
fix(build): refresh supplemental image package layers
2026-10-19 09:21:26 -05:00
james.maesandCodex 576de90e03 fix(build): refresh supplemental image package layers
Force fresh base-image metadata and package upgrades for supplemental images while retaining enforced vulnerability scans before publication.

Co-Authored-By: Codex <noreply@openai.com>
Signed-off-by: James Maes <james@kof22.com>
2026-10-19 09:13:40 -05:00
james.maes 9678be0cff Merge pull request #41 from KofTwentyTwo/release/0.3.7-backmerge
chore(release): backmerge Munitor 0.3.7
2026-10-19 08:29:57 -05:00
james.maes baca55bd77 Merge pull request #40 from KofTwentyTwo/release/0.3.7
chore(release): publish Munitor 0.3.7
v0.3.7
2026-10-19 08:22:15 -05:00
james.maesandCodex 01176862d4 chore(release): prepare Munitor 0.3.7
Co-Authored-By: Codex <noreply@openai.com>
Signed-off-by: James Maes <james@kof22.com>
2026-10-19 08:04:03 -05:00
james.maes f7487b356a Merge pull request #39 from KofTwentyTwo/feature/fresh-java-runtime
fix: refresh generated JVM runtime packages on every build
2026-10-19 08:02:29 -05:00
james.maesandCodex 21517b25e7 fix: refresh generated JVM runtime packages on every build
Co-Authored-By: Codex <noreply@openai.com>
Signed-off-by: James Maes <james@kof22.com>
2026-10-19 07:50:52 -05:00
james.maes 34ddd25ac9 Merge pull request #38 from KofTwentyTwo/feature/scan-gates-enforce
fix(scan): make security-scan and sast-scan fail on findings
2026-10-19 07:48:49 -05:00
james.maesandClaude Opus 5.5 4aeccb801e fix(scan): make the security-scan and sast-scan gates fail on findings
- run_trivy.sh: `trivy fs` ran without --exit-code, so it always exited 0
  and security-scan passed with HIGH/CRITICAL findings in the report. Add
  --exit-code 1 and print the findings table on failure.
- Semgrep 1.61.1 cannot parse the current `auto` ruleset, so sast-scan ran
  zero rules on zero files and passed. Move the executor to
  semgrep/semgrep:1.181.0, and fail the job when the report shows no files
  scanned or a rule configuration error (even in warn-only mode). Print a
  findings summary in the job output.
- tests/test_scan_gates.sh covers both gates with tool stubs.

Consumers pick this up when they bump their pinned orb version; repos with
existing HIGH/CRITICAL or Semgrep findings will need to triage them then.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 15:42:51 -05:00
james.maes a3d680f130 Merge pull request #37 from KofTwentyTwo/main
chore: back-merge main into develop after 0.3.6
2026-10-13 17:24:24 -05:00
james.maes 57dffdd9a3 Merge pull request #36 from KofTwentyTwo/release/0.3.6
Release Munitor 0.3.6
v0.3.6
2026-10-13 17:17:42 -05:00
james.maesandClaude Opus 5.5 9e2c45e79a docs(readme): adoption examples use 0.3.6
Signed-off-by: James Maes <james@kof22.com>

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 17:11:51 -05:00
james.maes fbeec65cb5 Merge pull request #35 from KofTwentyTwo/feature/supplemental-push-boolean
fix: push supplemental images on release builds again (0.3.5 regression)
2026-10-13 17:11:47 -05:00
james.maesandClaude Opus 5.5 69898922be fix: push supplemental images on release builds again
CircleCI renders the boolean push parameter as 1/0 in the step
environment, but build_push_supplemental.sh only pushed when
PUSH_IMAGES was the string "true". Since 0.3.5 every release build
built and scanned supplemental images and never pushed them, so
deployments referencing them hit ImagePullBackOff (kof22 0.1.75).

PUSH_IMAGES now accepts true/1/yes/on and false/0/no/off/empty; unset
still means push, and an unrecognised value fails before any build.
Tests cover release-mode pushes (1, true, TRUE) of every supplemental
image, PR-mode non-pushes (0, false, empty), and the invalid value.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: James Maes <james@kof22.com>
2026-10-13 17:05:34 -05:00
james.maes 59eb5294fe Merge pull request #34 from KofTwentyTwo/main
chore: back-merge main into develop after 0.3.5
2026-10-13 15:44:21 -05:00
james.maes 16079c5ca8 Merge pull request #33 from KofTwentyTwo/release/0.3.5
Release Munitor 0.3.5
v0.3.5
2026-10-13 15:37:54 -05:00
james.maesandClaude Opus 5.5 578c7ea0eb docs(readme): adoption examples use 0.3.5
Signed-off-by: James Maes <james@kof22.com>

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 15:31:55 -05:00
james.maes 53c04937b0 Merge pull request #32 from KofTwentyTwo/feature/pr-image-scan
feat: scan container images in PR pipelines
2026-10-13 14:42:28 -05:00
james.maesandClaude Opus 5.5 b09ced056f feat: scan container images in PR pipelines
New munitor/docker_scan job (image-scan) in the pr-checks workflow of
java-webapp, gradle-webapp, node-api and node-webapp: builds the app
image and every supplemental image, runs the same Trivy 0.69.3
HIGH/CRITICAL --exit-code 1 scan as the release pipeline (same
.trivyignore), stores the JSON results, and never pushes.
build_push_supplemental gains push (default true, unchanged behavior).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 14:18:41 -05:00
james.maes fb232fb6fe Merge pull request #31 from KofTwentyTwo/main
chore: back-merge main into develop after 0.3.4
2026-10-12 06:24:42 -05:00
james.maes 687944e872 Merge pull request #30 from KofTwentyTwo/release/0.3.4
Release Munitor 0.3.4
v0.3.4
2026-10-12 06:19:46 -05:00
james.maes e54d739554 Merge pull request #29 from KofTwentyTwo/feature/signed-gitops-commits
fix: sign GitOps bumps, run tests in CI, scope feature snapshots
2026-10-12 06:14:14 -05:00
james.maesandClaude Opus 5.5 71c262fb62 docs: cite EX-0011 for the 2-space shell layout
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: James Maes <james@kof22.com>
2026-10-12 06:09:01 -05:00
james.maes 6cbe4256d5 Merge pull request #28 from KofTwentyTwo/feature/adoption-checklist-link
docs(readme): link the QQQ adoption checklist
2026-10-12 06:04:10 -05:00
james.maesandClaude Opus 5.5 d7960161fb test: cover signed API commits and head-refresh retries in update_cd_repo
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: James Maes <james@kof22.com>
2026-10-12 06:02:52 -05:00
james.maesandClaude Opus 5.5 807120f2af ci: install bats-core from its release tag
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: James Maes <james@kof22.com>
2026-10-12 05:56:11 -05:00
james.maesandClaude Opus 5.5 1c64d1e18e fix: sign GitOps bumps, run tests in CI, scope feature snapshots
update_cd_repo creates the CD commit through the GraphQL
createCommitOnBranch mutation so GitHub signs it, letting the GitOps
repository require signed commits without a bypass actor. Concurrent
bumps retry against the refreshed head.

CI pins circleci/orb-tools to 12.5.0 and adds a test job running the
script, template and BATS suites. Feature branches publish only the
immutable dev:<sha> tag; develop keeps dev:snapshot (#26). The
generator accepts the documented org key (#27). Adds .editorconfig.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: James Maes <james@kof22.com>
2026-10-12 05:51:41 -05:00
james.maesandClaude Opus 5.5 24482fd030 docs(readme): link the QQQ adoption checklist; neutral example
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: James Maes <james@kof22.com>
2026-10-12 05:47:45 -05:00
james.maes ad1d30681b Merge pull request #25 from KofTwentyTwo/feature/adoption-standards-docs
docs: add adoption guide, security policy and code owners
2026-10-12 05:30:48 -05:00
james.maesandClaude Opus 5.5 b4a9d120eb docs: add adoption guide, security policy and code owners
Add an "Adopting in another app" section to the README (version,
.munitor.yml example, CircleCI settings, contexts and secrets, branch
model, deployment infrastructure, known limitations, 0.3.3 upgrade
notes), a tier and standards statement, and reference rows for the
previously undocumented .munitor.yml keys. Add SECURITY.md,
.github/CODEOWNERS and a CONTRIBUTING workflow section (branches,
Conventional Commits, DCO sign-off, local checks), and fix the
nonexistent `make test` target in CLAUDE.md.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: James Maes <james@kof22.com>
2026-10-12 05:29:05 -05:00
james.maes b3b90f5886 Merge pull request #24 from KofTwentyTwo/main
Merge main back into develop after 0.3.3
2026-10-11 14:50:53 -05:00
james.maes d9b4da9e9e Merge pull request #23 from KofTwentyTwo/release/0.3.3
Release 0.3.3: atomic release versions
v0.3.3
2026-10-11 14:49:46 -05:00
james.maesandClaude Opus 5.5 4b99bbec09 chore: prepare Munitor 0.3.3 release
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 14:48:30 -05:00
james.maes 00f349cb0c Merge pull request #22 from KofTwentyTwo/feature/atomic-release-versions
fix: atomic release versions, immutable image tags, conditional cd_path
2026-10-11 14:48:10 -05:00
james.maesandClaude Opus 5.5 57cb7a2aca fix: atomic release versions and immutable image tags
Two main merges built minutes apart both computed the same GitVersion
version. The later pipeline overwrote the image tag in GHCR, github-release
tagged whatever main pointed at (--target main), and the GitOps bump was a
no-op, so production ran an image without the later merge (Website-Backend
0.1.24 and 0.1.32).

- allocate_version: on main, reserve vX.Y.Z by creating the git tag through
  the GitHub refs API (create-if-absent). On conflict with another commit,
  take the next patch; reruns of the same commit reuse their tag. Existing
  tags are never moved. Runs in mvn/gradle/node build-and-test before the
  version is baked into artifacts.
- guard_image_tags: refuse to push a main or supplemental version tag that
  already exists for a different commit (org.opencontainers.image.revision
  label, now set on every build); fail closed on registry errors.
- update_cd_repo: verify vX.Y.Z belongs to this commit before bumping the
  GitOps repo; record the source commit in the GitOps commit message.
- github_release: target CIRCLE_SHA1 instead of main and refuse when the tag
  points elsewhere.
- Generator: render cd_path only when cd.path is set, so manifests pinned to
  orb versions predating the parameter (website develop branches, Concilium,
  makers4) stop failing with "Unexpected argument(s): cd_path".

Tests: tests/test_allocate_version.sh (incl. 8 concurrent allocators against
an atomic fake refs API) and tests/test_release_guards.sh.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 13:56:58 -05:00
james.maes f1d26b69d7 Merge pull request #21 from KofTwentyTwo/main
chore: sync Munitor 0.3.2 release to develop
2026-10-10 15:15:54 -05:00
james.maes ac3eb0e162 Merge pull request #20 from KofTwentyTwo/release/0.3.2
chore: release Munitor 0.3.2
v0.3.2
2026-10-10 15:12:11 -05:00
James MaesandGPT-6 50ae000759 docs: format orb component name patterns
Co-Authored-By: GPT-6 <codex@openai.com>
Signed-off-by: James Maes <jmaes@dmdbrands.com>
2026-10-10 15:10:30 -05:00
James MaesandGPT-6 b357559760 chore: prepare Munitor 0.3.2 release
Co-Authored-By: GPT-6 <codex@openai.com>
Signed-off-by: James Maes <jmaes@dmdbrands.com>
2026-10-10 15:10:08 -05:00
james.maes c8bbf2ef39 Merge pull request #19 from KofTwentyTwo/feature/scoped-audit-exceptions
fix(#18): unblock website release CI
2026-10-10 15:09:55 -05:00
James MaesandGPT-6 ae7d93328f fix(#18): unblock website release CI
Closes #18

Co-Authored-By: GPT-6 <codex@openai.com>
Signed-off-by: James Maes <jmaes@dmdbrands.com>
2026-10-10 15:06:49 -05:00
james.maes d2e31ed001 Merge pull request #17 from KofTwentyTwo/main
Sync main (v0.3.1) back to develop
2026-09-23 18:05:54 -05:00
james.maes e84008ee19 Merge pull request #16 from KofTwentyTwo/release/0.3.1
Release 0.3.1
v0.3.1
2026-09-23 17:54:02 -05:00
james.maes d0ce5266ee Merge pull request #15 from KofTwentyTwo/feature/GH-14-distroless-debian13
fix(#14): distroless debian13 runtime for node-webapp
2026-09-23 17:52:03 -05:00