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`
|
- Namespace: `kof22`
|
||||||
- Orb: `kof22/munitor`
|
- Orb: `kof22/munitor`
|
||||||
- Latest stable: `kof22/munitor@0.3.10`
|
- Latest stable: `kof22/munitor@0.3.11`
|
||||||
- Dev snapshot: `kof22/munitor@dev:snapshot`
|
- Dev snapshot: `kof22/munitor@dev:snapshot`
|
||||||
|
|
||||||
`0.3.0` includes first-class pnpm support, repository-owned Dockerfiles for
|
`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 |
|
| **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 |
|
| **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) |
|
| **Security** | [SECURITY.md](SECURITY.md) |
|
||||||
| **Contributing** | [CONTRIBUTING.md](CONTRIBUTING.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 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
|
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
|
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).
|
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),
|
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).
|
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
|
### 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:
|
- `.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
|
```yaml
|
||||||
pipeline: java-webapp
|
pipeline: java-webapp
|
||||||
orb_version: "0.3.10"
|
orb_version: "0.3.11"
|
||||||
image_name: my-service
|
image_name: my-service
|
||||||
java_version: "21"
|
java_version: "21"
|
||||||
docker:
|
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)
|
## Verified agile CI rollout (2026-10-19)
|
||||||
|
|
||||||
Munitor 0.3.10 is published from main 19192d07 (PR48 implementation, PR49 release,
|
Munitor 0.3.10 is published from main 19192d07 (PR48 implementation, PR49 release,
|
||||||
|
|||||||
@@ -2,6 +2,8 @@
|
|||||||
|
|
||||||
## Pending
|
## 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 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).
|
- [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_path: ${MUNITOR_HEALTH_PATH}
|
||||||
health_port: "${MUNITOR_HEALTH_PORT}"
|
health_port: "${MUNITOR_HEALTH_PORT}"
|
||||||
health_db: "${MUNITOR_HEALTH_DB}"
|
health_db: "${MUNITOR_HEALTH_DB}"
|
||||||
|
health_migrations: "${MUNITOR_HEALTH_MIGRATIONS}"
|
||||||
|
health_smoke_paths: "${MUNITOR_HEALTH_SMOKE_PATHS}"
|
||||||
##IF_SUPPLEMENTAL##
|
##IF_SUPPLEMENTAL##
|
||||||
supplemental_images: '${MUNITOR_SUPPLEMENTAL_IMAGES_JSON}'
|
supplemental_images: '${MUNITOR_SUPPLEMENTAL_IMAGES_JSON}'
|
||||||
##ENDIF_SUPPLEMENTAL##
|
##ENDIF_SUPPLEMENTAL##
|
||||||
|
|||||||
@@ -66,6 +66,8 @@
|
|||||||
health_path: ${MUNITOR_HEALTH_PATH}
|
health_path: ${MUNITOR_HEALTH_PATH}
|
||||||
health_port: "${MUNITOR_HEALTH_PORT}"
|
health_port: "${MUNITOR_HEALTH_PORT}"
|
||||||
health_db: "${MUNITOR_HEALTH_DB}"
|
health_db: "${MUNITOR_HEALTH_DB}"
|
||||||
|
health_migrations: "${MUNITOR_HEALTH_MIGRATIONS}"
|
||||||
|
health_smoke_paths: "${MUNITOR_HEALTH_SMOKE_PATHS}"
|
||||||
##IF_SUPPLEMENTAL##
|
##IF_SUPPLEMENTAL##
|
||||||
supplemental_images: '${MUNITOR_SUPPLEMENTAL_IMAGES_JSON}'
|
supplemental_images: '${MUNITOR_SUPPLEMENTAL_IMAGES_JSON}'
|
||||||
##ENDIF_SUPPLEMENTAL##
|
##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