Compare commits
6
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
cc435bb7eb | ||
|
|
e4500339b4 | ||
|
|
7f85781879
|
||
|
|
d76a46ce11 | ||
|
|
18ea857841
|
||
|
|
ee31744cb9 |
No files matched your search
@@ -29,7 +29,7 @@ GitHub Issues (org: KofTwentyTwo). Commit format: `feat(#N): description` or `Cl
|
||||
|
||||
- Namespace: `kof22`
|
||||
- Orb: `kof22/munitor`
|
||||
- Latest stable: `kof22/munitor@0.3.10`
|
||||
- Latest stable: `kof22/munitor@0.3.11`
|
||||
- Dev snapshot: `kof22/munitor@dev:snapshot`
|
||||
|
||||
`0.3.0` includes first-class pnpm support, repository-owned Dockerfiles for
|
||||
|
||||
@@ -6,7 +6,7 @@ Latin: *munitor* (fortifier, protector) -- KofTwentyTwo's unified CircleCI orb f
|
||||
| --- | --- |
|
||||
| **Tier** | Internal until classified -- listed under *Awaiting classification* in the KofTwentyTwo standards [MAINTAINERS.md](https://github.com/KofTwentyTwo/standards/blob/main/MAINTAINERS.md); Product-tier requirements are being adopted |
|
||||
| **Standards** | Targets [KofTwentyTwo standards](https://github.com/KofTwentyTwo/standards) 1.0.0 |
|
||||
| **Orb** | [`kof22/munitor`](https://circleci.com/developer/orbs/orb/kof22/munitor), latest stable `0.3.10` |
|
||||
| **Orb** | [`kof22/munitor`](https://circleci.com/developer/orbs/orb/kof22/munitor), latest stable `0.3.11` |
|
||||
| **Security** | [SECURITY.md](SECURITY.md) |
|
||||
| **Contributing** | [CONTRIBUTING.md](CONTRIBUTING.md) |
|
||||
|
||||
@@ -78,7 +78,7 @@ preserving all other branch rules. A single adoption PR may update both orb pins
|
||||
and enable `ci.docs_only`: those config changes force full CI. Verify the gate
|
||||
and migrate required checks before merging it or opening a docs-only PR. Munitor's
|
||||
own native no-op gate reports `ci/circleci: lint-pack/ci-ready`. Both features
|
||||
ship in 0.3.10. Verify each consumer's actual successful context before changing
|
||||
ship in 0.3.11. Verify each consumer's actual successful context before changing
|
||||
its rules; see [the adoption record](docs/PLAN-agile-ci.md).
|
||||
|
||||
Use native [Website-Backend Insights](https://app.circleci.com/insights/github/KofTwentyTwo/Website-Backend/workflows),
|
||||
@@ -111,16 +111,16 @@ would not receive that exemption.
|
||||
|
||||
Munitor is a public CircleCI orb: any CircleCI organization can use it without forking. This checklist covers what a new consumer needs, for example a Java/Maven web service. A QQQ application should also read the [QQQ adoption checklist](https://github.com/QRun-IO/qqq/blob/develop/docs/migration/adoption-checklist.adoc) (section 7 covers release tooling).
|
||||
|
||||
**Version.** Use `kof22/munitor@0.3.10` (or `@0.3` to float on the 0.3 line) in `.circleci/config.yml`, and the same value as `orb_version` in `.munitor.yml`. Keep the setup orb and the generated pipeline on the same line.
|
||||
**Version.** Use `kof22/munitor@0.3.11` (or `@0.3` to float on the 0.3 line) in `.circleci/config.yml`, and the same value as `orb_version` in `.munitor.yml`. Keep the setup orb and the generated pipeline on the same line.
|
||||
|
||||
### 1. Repository files
|
||||
|
||||
- `.circleci/config.yml`: the setup config from [Quick Start](#quick-start), pinned to `kof22/munitor@0.3.10`.
|
||||
- `.circleci/config.yml`: the setup config from [Quick Start](#quick-start), pinned to `kof22/munitor@0.3.11`.
|
||||
- `.munitor.yml`: pick a [pipeline type](#pipeline-types). A Java service is `java-webapp`. KofTwentyTwo's Website-Backend is a working example; a generalized version:
|
||||
|
||||
```yaml
|
||||
pipeline: java-webapp
|
||||
orb_version: "0.3.10"
|
||||
orb_version: "0.3.11"
|
||||
image_name: my-service
|
||||
java_version: "21"
|
||||
docker:
|
||||
|
||||
@@ -1,3 +1,24 @@
|
||||
## Release 0.3.11 (2026-10-19)
|
||||
|
||||
PR52 passed all eight hosted checks on 18ea857 and merged as d76a46c.
|
||||
This release forwards configured Java migration images and smoke paths to develop
|
||||
and staging. Source and packed generator regressions, make all and 20 BATS pass.
|
||||
Release metadata is the only change from the verified implementation; stable
|
||||
publication and backend adoption follow. Production 0.1.138 remains healthy.
|
||||
|
||||
## Java deployment health parameter correction (2026-10-19)
|
||||
|
||||
Backend develop job 6405 exposed missing migration/smoke configuration in the
|
||||
shared Java deployment partial: startup failed because slack_template was absent.
|
||||
The partial now forwards health_migrations and health_smoke_paths just like the
|
||||
production and release workflows. No application or scan policy changes.
|
||||
|
||||
tests/test_java_deploy_health.sh checks configured values and empty defaults in
|
||||
develop, staging, production and release-candidate using both source and packed
|
||||
generators. Full make all, 20 BATS tests, focused regression rerun and shell lint
|
||||
passed through WSL. Packed scripts are synchronized. Publication and consumer
|
||||
verification are pending.
|
||||
|
||||
## Verified agile CI rollout (2026-10-19)
|
||||
|
||||
Munitor 0.3.10 is published from main 19192d07 (PR48 implementation, PR49 release,
|
||||
|
||||
@@ -2,6 +2,8 @@
|
||||
|
||||
## Pending
|
||||
|
||||
- [ ] Validate and release Java develop/staging health_migrations and health_smoke_paths propagation; verify both generators and a corrected consumer build before claiming rollout success.
|
||||
|
||||
- [x] Publish 0.3.10, adopt in backend PR333, verify aggregate check names and migrate required lists; docs PR335 passed in 5m23 and native cancellation was observed (docs/PLAN-agile-ci.md).
|
||||
|
||||
- [x] Publish fast Java CI as 0.3.9; backend PR330 adopted it and measured the warm workflow at 20m45 (from 37m04).
|
||||
|
||||
@@ -2694,6 +2694,8 @@ cat > /tmp/munitor/templates/partials/java-webapp-deploy.yml.tpl << 'MUNITOR_PAR
|
||||
health_path: ${MUNITOR_HEALTH_PATH}
|
||||
health_port: "${MUNITOR_HEALTH_PORT}"
|
||||
health_db: "${MUNITOR_HEALTH_DB}"
|
||||
health_migrations: "${MUNITOR_HEALTH_MIGRATIONS}"
|
||||
health_smoke_paths: "${MUNITOR_HEALTH_SMOKE_PATHS}"
|
||||
##IF_SUPPLEMENTAL##
|
||||
supplemental_images: '${MUNITOR_SUPPLEMENTAL_IMAGES_JSON}'
|
||||
##ENDIF_SUPPLEMENTAL##
|
||||
|
||||
@@ -66,6 +66,8 @@
|
||||
health_path: ${MUNITOR_HEALTH_PATH}
|
||||
health_port: "${MUNITOR_HEALTH_PORT}"
|
||||
health_db: "${MUNITOR_HEALTH_DB}"
|
||||
health_migrations: "${MUNITOR_HEALTH_MIGRATIONS}"
|
||||
health_smoke_paths: "${MUNITOR_HEALTH_SMOKE_PATHS}"
|
||||
##IF_SUPPLEMENTAL##
|
||||
supplemental_images: '${MUNITOR_SUPPLEMENTAL_IMAGES_JSON}'
|
||||
##ENDIF_SUPPLEMENTAL##
|
||||
|
||||
@@ -0,0 +1,54 @@
|
||||
#!/usr/bin/env bash
|
||||
# Verify deployment health configuration reaches source and shipped generators.
|
||||
set -euo pipefail
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
WORK=$(mktemp -d)
|
||||
trap 'rm -rf -- "$WORK"' EXIT
|
||||
export CIRCLE_BRANCH=develop CIRCLE_TAG=""
|
||||
cp "${SCRIPT_DIR}/fixtures/java-webapp.munitor.yml" "${WORK}/defaults.yml"
|
||||
cp "${WORK}/defaults.yml" "${WORK}/configured.yml"
|
||||
cat >>"${WORK}/configured.yml" <<'YAML'
|
||||
health:
|
||||
path: /health/ready
|
||||
port: 8181
|
||||
db: "true"
|
||||
migrations: migrations
|
||||
smoke_paths:
|
||||
- /api/templates
|
||||
- /api/version
|
||||
YAML
|
||||
|
||||
# Packed helpers share /tmp/munitor; run these generators sequentially.
|
||||
for generator in generate_config.sh packed_generate_config.sh; do
|
||||
for mode in configured defaults; do
|
||||
MUNITOR_CONFIG="${WORK}/${mode}.yml" MUNITOR_OUTPUT_FILE="${WORK}/generated.yml" \
|
||||
bash "${SCRIPT_DIR}/../src/scripts/${generator}" >"${WORK}/generator.log" 2>&1 || {
|
||||
cat "${WORK}/generator.log"
|
||||
exit 1
|
||||
}
|
||||
yq -o=json '.' "${WORK}/generated.yml" >"${WORK}/generated.json"
|
||||
python3 - "${WORK}/generated.json" "$mode" <<'PY'
|
||||
import json
|
||||
import sys
|
||||
|
||||
with open(sys.argv[1], encoding='utf-8') as source:
|
||||
workflows = json.load(source)['workflows']
|
||||
expected = {'health_migrations': '', 'health_smoke_paths': ''}
|
||||
if sys.argv[2] == 'configured':
|
||||
expected = {
|
||||
'health_path': '/health/ready',
|
||||
'health_port': '8181',
|
||||
'health_db': 'true',
|
||||
'health_migrations': 'migrations',
|
||||
'health_smoke_paths': '/api/templates,/api/version',
|
||||
}
|
||||
for workflow in ('develop', 'staging', 'production', 'release-candidate'):
|
||||
jobs = [job['munitor/docker_build_push'] for job in workflows[workflow]['jobs']
|
||||
if isinstance(job, dict) and 'munitor/docker_build_push' in job]
|
||||
assert len(jobs) == 1, (workflow, 'expected one Docker build job', jobs)
|
||||
for parameter, value in expected.items():
|
||||
assert jobs[0].get(parameter) == value, (workflow, parameter, jobs[0].get(parameter), value)
|
||||
PY
|
||||
printf 'PASS: %s %s deployment health parameters\n' "$generator" "$mode"
|
||||
done
|
||||
done
|
||||
Reference in new issue
Block a user