ci: gate SCCM integration branch - #429
Conversation
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (1)
📝 WalkthroughWalkthroughThe CI workflow now triggers for ChangesCI trigger update
Estimated code review effort: 1 (Trivial) | ~2 minutes Possibly related PRs
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
Comment |
|
@coderabbitai review Please review exact head |
There was a problem hiding this comment.
Pull request overview
Extends the existing CI workflow triggers so the same CI job set runs for both main and the long-lived SCCM integration branch (codex/parser-family-skeleton), ensuring PRs targeting that branch are gated and merges into it are validated.
Changes:
- Updated
on.push.branchesto includecodex/parser-family-skeleton - Updated
on.pull_request.branchesto includecodex/parser-family-skeleton(with a clarifying comment about silent non-runs when omitted)
🧩 Analysis chain🏁 Script executed: #!/bin/bash
set -euo pipefail
expected_head='cc6bf796c524e8794cbe7562f57fcff395cb5de6'
base='065b8cb7e4d4184fe4141f4da882e968d7590836'
workflow='.github/workflows/cmtrace-ci.yml'
echo '== Checked-out HEAD =='
git rev-parse HEAD
echo '== Requested commit =='
printf '%s\n' "$expected_head"
echo '== Commit ancestry and changed files =='
git merge-base --is-ancestor "$base" "$expected_head" && echo 'base is an ancestor of requested head'
git diff --name-status "$base..$expected_head"
git diff --check "$base..$expected_head"
echo '== Exact workflow diff =='
git diff --no-ext-diff --unified=80 "$base..$expected_head" -- "$workflow"
echo '== Workflow outline at requested HEAD =='
ast-grep outline "$workflow" --items all || true
echo '== Job keys and hashes, base versus requested HEAD =='
python3 - <<'PY'
import hashlib
import subprocess
import sys
base = "065b8cb7e4d4184fe4141f4da882e968d7590836"
head = "cc6bf796c524e8794cbe7562f57fcff395cb5de6"
path = ".github/workflows/cmtrace-ci.yml"
try:
import yaml
except ImportError:
print("PyYAML is unavailable; cannot perform structured YAML comparison.", file=sys.stderr)
sys.exit(0)
class Loader(yaml.SafeLoader):
pass
for key, resolvers in list(Loader.yaml_implicit_resolvers.items()):
Loader.yaml_implicit_resolvers[key] = [
(tag, regexp) for tag, regexp in resolvers
if tag != "tag:yaml.org,2002:bool"
]
def get_doc(rev):
raw = subprocess.check_output(["git", "show", f"{rev}:{path}"], text=True)
return yaml.load(raw, Loader=Loader)
for label, rev in [("base", base), ("head", head)]:
doc = get_doc(rev)
jobs = doc.get("jobs", {})
print(f"{label} trigger: {doc.get('on')!r}")
print(f"{label} job IDs: {list(jobs)}")
for job_id, job in jobs.items():
encoded = yaml.dump(job, sort_keys=True).encode()
print(f"{label} jobs.{job_id} sha256: {hashlib.sha256(encoded).hexdigest()}")
base_jobs = get_doc(base).get("jobs", {})
head_jobs = get_doc(head).get("jobs", {})
if base_jobs != head_jobs:
print("ERROR: Job definitions differ.", file=sys.stderr)
sys.exit(1)
print("PASS: Job definitions are structurally identical.")
PYLength of output: 5919 🏁 Script executed: #!/bin/bash
set -euo pipefail
base='065b8cb7e4d4184fe4141f4da882e968d7590836'
head='cc6bf796c524e8794cbe7562f57fcff395cb5de6'
workflow='.github/workflows/cmtrace-ci.yml'
base_file="$(mktemp)"
head_file="$(mktemp)"
base_jobs="$(mktemp)"
head_jobs="$(mktemp)"
trap 'rm -f "$base_file" "$head_file" "$base_jobs" "$head_jobs"' EXIT
git show "$base:$workflow" > "$base_file"
git show "$head:$workflow" > "$head_file"
echo '== Exact trigger declarations at requested HEAD =='
awk '
/^ push:$/ || /^ pull_request:$/ { section=$1; print section; next }
section && /^ branches:/ { print; section=""; next }
' "$head_file"
echo '== Exact expected trigger assertions =='
grep -Fx ' branches: [main, codex/parser-family-skeleton]' "$head_file" | wc -l | \
awk '$1 == 2 { print "PASS: both trigger branch lists are exact."; next } { print "FAIL: expected two exact branch lists, found " $1; exit 1 }'
echo '== Byte comparison of jobs sections =='
sed -n '/^jobs:$/,$p' "$base_file" > "$base_jobs"
sed -n '/^jobs:$/,$p' "$head_file" > "$head_jobs"
cmp -s "$base_jobs" "$head_jobs"
echo 'PASS: jobs section is byte-identical to base.'
echo '== actionlint =='
if command -v actionlint >/dev/null 2>&1; then
actionlint "$workflow"
echo 'PASS: actionlint completed successfully.'
else
echo 'SKIP: actionlint is not installed in this environment.'
fiLength of output: 2001 🏁 Script executed: #!/bin/bash
set -euo pipefail
base='065b8cb7e4d4184fe4141f4da882e968d7590836'
head='cc6bf796c524e8794cbe7562f57fcff395cb5de6'
workflow='.github/workflows/cmtrace-ci.yml'
base_jobs="$(mktemp)"
head_jobs="$(mktemp)"
trap 'rm -f "$base_jobs" "$head_jobs"' EXIT
git show "$base:$workflow" | sed -n '/^jobs:$/,$p' > "$base_jobs"
git show "$head:$workflow" | sed -n '/^jobs:$/,$p' > "$head_jobs"
echo '== Job-section SHA-256 digests =='
base_hash="$(sha256sum "$base_jobs" | awk '{print $1}')"
head_hash="$(sha256sum "$head_jobs" | awk '{print $1}')"
printf 'base: %s\nhead: %s\n' "$base_hash" "$head_hash"
test "$base_hash" = "$head_hash"
echo 'PASS: jobs section is byte-identical to base.'
echo '== actionlint =='
if command -v actionlint >/dev/null 2>&1; then
actionlint "$workflow"
echo 'PASS: actionlint completed successfully.'
else
echo 'SKIP: actionlint is not installed in this environment.'
fiLength of output: 1297 🏁 Script executed: #!/bin/bash
set -euo pipefail
base='065b8cb7e4d4184fe4141f4da882e968d7590836'
head='cc6bf796c524e8794cbe7562f57fcff395cb5de6'
workflow='.github/workflows/cmtrace-ci.yml'
echo '== Job-section Git content hashes =='
base_hash="$(
git show "$base:$workflow" |
sed -n '/^jobs:$/,$p' |
git hash-object --stdin
)"
head_hash="$(
git show "$head:$workflow" |
sed -n '/^jobs:$/,$p' |
git hash-object --stdin
)"
printf 'base: %s\nhead: %s\n' "$base_hash" "$head_hash"
test "$base_hash" = "$head_hash"
echo 'PASS: jobs section is byte-identical to base.'
echo '== actionlint availability and result =='
if command -v actionlint >/dev/null 2>&1; then
actionlint "$workflow"
echo 'PASS: actionlint completed successfully.'
else
echo 'SKIP: actionlint is not installed in this environment.'
fiLength of output: 1198
Verified:
✅ Action performedReview finished.
|
Summary
codex/parser-family-skeletonmainand the SCCM integration branchThis is the integration-branch port of #421. That PR fixed
main, but the SCCM implementation lanes under epic #317 are based oncodex/parser-family-skeleton, so the trigger change must also land on that branch before those PRs receive CI.Scope
Only
.github/workflows/cmtrace-ci.ymlchanges. No jobs or steps are modified.Refs #317
Verification
AssertionError: ['main']build,check,e2e,frontend,msrv,windows-espactionlint .github/workflows/cmtrace-ci.ymlgit diff --check 065b8cb7e4d4184fe4141f4da882e968d7590836..HEAD.github/workflows/cmtrace-ci.ymlSummary by CodeRabbit