4 Commits
Author SHA1 Message Date
ic-builder 5023c21dff Merge pull request 'cr-gate workflow: PR bodies must carry the GLPI CR deep link' (#2) from ic-builder/cr-gate into main
ci / audit (push) Successful in 24s
2026-09-06 14:56:40 +00:00
ic-builder 86b208a33d cr-gate workflow: PR bodies must carry the GLPI CR deep link
ci / audit (pull_request) Successful in 22s
cr-gate / cr-link (pull_request) Failing after 3s
Reference implementation of the CR-gating ruling 2026-09-06.
Grep-safe env indirection (no injection through ${{ }} in shell).
Standard: https://projects.knownelement.com/issues/820#note-1

Ticket: https://projects.knownelement.com/issues/820
2026-09-06 09:55:50 -05:00
ic-builder d18ab408ca Merge pull request '[ca] fix SC2015 for CI shellcheck 0.9' (#1) from ic-builder/ci-shellcheck-v09 into main
ci / audit (push) Successful in 24s
2026-09-06 14:26:05 +00:00
ic-builder 99a634e944 [ca] fix SC2015 for CI shellcheck 0.9
ci / audit (pull_request) Successful in 23s
Unambiguous if-form for the two-condition guard. CI (node:20-bookworm,
Debian shellcheck 0.9) flags the A && B || C pattern where the koalaman
stable docker path passed. No behavior change.

CI evidence: https://git.knownelement.com/KNEL/ca/actions/runs/117821
Ticket: https://projects.knownelement.com/issues/784
2026-09-06 09:24:59 -05:00
2 changed files with 25 additions and 1 deletions
+22
View File
@@ -0,0 +1,22 @@
# CR gate [#820] — reference implementation of the 2026-09-06 founder ruling:
# a PR touching production must reference its GLPI CR deep link.
# Org repos copy this file verbatim; standard documented on Discourse t/339.
name: cr-gate
on:
pull_request:
types: [opened, edited, reopened, synchronize]
jobs:
cr-link:
runs-on: ultix
container:
image: node:20-bookworm
steps:
- name: verify GLPI CR deep link in PR body
env:
PR_BODY: ${{ gitea.event.pull_request.body }}
run: |
echo "$PR_BODY" | grep -qE 'cmdb\.knownelement\.com/front/change\.form\.php\?id=[0-9]+' || {
echo "::error::PR body must reference the GLPI CR deep link (https://cmdb.knownelement.com/front/change.form.php?id=N) per the CR-gating ruling (Discourse t/339). Dev-only PRs: state 'no-CR (dev-only)' explicitly."
exit 1
}
echo "CR deep link present"
+3 -1
View File
@@ -22,7 +22,9 @@ ROOT_KEY="/root/ca-root/root.key"
IMAGE="smallstep/step-ca@sha256:e9e8fa3262bf37b130962ffddbf6a64ac188f0bbb80959cf3ddc04c6bf294c3d" IMAGE="smallstep/step-ca@sha256:e9e8fa3262bf37b130962ffddbf6a64ac188f0bbb80959cf3ddc04c6bf294c3d"
TAILNET_IP="$(tailscale ip -4)" TAILNET_IP="$(tailscale ip -4)"
[ -f "$ROOT_CRT" ] && [ -f "$ROOT_KEY" ] || { echo "FAIL: fleet root not found at $ROOT_CRT/$ROOT_KEY" >&2; exit 1; } if [ ! -f "$ROOT_CRT" ] || [ ! -f "$ROOT_KEY" ]; then
echo "FAIL: fleet root not found at $ROOT_CRT/$ROOT_KEY" >&2; exit 1
fi
[ -n "$TAILNET_IP" ] || { echo "FAIL: no tailscale IP" >&2; exit 1; } [ -n "$TAILNET_IP" ] || { echo "FAIL: no tailscale IP" >&2; exit 1; }
if [ -d "$DATA" ] && [ "${1:-}" != "--reinit" ]; then if [ -d "$DATA" ] && [ "${1:-}" != "--reinit" ]; then
echo "FAIL: $DATA exists (pass --reinit to wipe and redo)" >&2; exit 1 echo "FAIL: $DATA exists (pass --reinit to wipe and redo)" >&2; exit 1