Skip to content

ci: improve gate job diagnostics and document branch protection requirement#465

Open
staging-devin-ai-integration[bot] wants to merge 1 commit into
mainfrom
devin/1779042888-ci-gate-diagnostics
Open

ci: improve gate job diagnostics and document branch protection requirement#465
staging-devin-ai-integration[bot] wants to merge 1 commit into
mainfrom
devin/1779042888-ci-gate-diagnostics

Conversation

@staging-devin-ai-integration
Copy link
Copy Markdown
Contributor

@staging-devin-ai-integration staging-devin-ai-integration Bot commented May 17, 2026

Summary

Improves the all-checks gate job in ci.yml with better diagnostic output and documents the branch protection requirement.

Investigation results: The gate job already correctly handles skipped sub-workflows — it only fails on failure or cancelled, allowing skipped results to pass through. Confirmed by checking recent merged PRs (e.g. #456 with 4 skipped sub-workflows, #460/#461/#462 with 1 skipped each). All Checks Passed is configured as a required status check and merges are not blocked by skipped jobs.

Changes:

  • Each job's name is now printed alongside its result for easier debugging (previously only the result value was logged on failure, with no indication of which job caused it)
  • Added a comment documenting that all-checks should be the only required status check in branch protection — individual sub-workflow job names must not be required, as path-filtered skips would leave them permanently pending

Review & Testing Checklist for Human

  • Verify the branch protection rules on main only require All Checks Passed (no individual sub-workflow job names like Skit / Lint or UI / Lint, Test & Build)
  • Confirm the CI gate passes on this PR (the change only touches .github/, so the ci path filter triggers all sub-workflows)

Notes

This PR is CI-only — no production code changes. The gate job logic (allow success/skipped, fail on failure/cancelled) is unchanged; only diagnostics and documentation are added.

Link to Devin session: https://staging.itsdev.in/sessions/68824382a1da4a05bb320d129a89f155
Requested by: @streamer45


Devin Review

Status Commit
🟢 Reviewed 60addb7
Open in Devin Review (Staging)

…rement

The all-checks gate job already correctly handles skipped sub-workflows
(only fails on failure/cancelled, allowing skipped results), but its
error output didn't identify which job failed.

Changes:
- Log each job name alongside its result for easier debugging
- Add comment documenting that all-checks should be the ONLY required
  status check in branch protection, so skipped path-filtered jobs
  never block merge
- Remove the generic success message (the job passing is sufficient)

Signed-off-by: Staging-Devin AI <166158716+staging-devin-ai-integration[bot]@users.noreply.github.com>
Co-Authored-By: Claudio Costa <cstcld91@gmail.com>
@staging-devin-ai-integration
Copy link
Copy Markdown
Contributor Author

🤖 Devin AI Engineer

I'll be helping with this pull request! Here's what you should know:

✅ I will automatically:

  • Address comments on this PR. Add '(aside)' to your comment to have me ignore it.
  • Look at CI failures and help fix them

Note: I can only respond to comments from users who have write access to this repository.

⚙️ Control Options:

  • Disable automatic comment and CI monitoring

Copy link
Copy Markdown
Contributor Author

@staging-devin-ai-integration staging-devin-ai-integration Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Devin Review found 3 potential issues.

Open in Devin Review (Staging)
Debug

Playground

Comment thread .github/workflows/ci.yml
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📝 Info: Workflow license headers are covered by REUSE annotations

Although .github/workflows/ci.yml does not contain an inline SPDX header, this PR did not add a new file and the repository-level REUSE.toml annotates all **/*.yml/**/*.yaml configuration files with StreamKit's MPL-2.0 licensing metadata (REUSE.toml:40-56). Because of that existing aggregate annotation, I did not treat the missing inline header as a CONTRIBUTING.md SPDX violation.

Open in Devin Review (Staging)

Was this helpful? React with 👍 or 👎 to provide feedback.

Debug

Playground

Comment thread .github/workflows/ci.yml
Comment on lines 137 to +139
if [[ "$r" == "failure" || "$r" == "cancelled" ]]; then
echo "::error::CI check failed or was cancelled ($r)"
exit 1
echo "::error::${names[$i]}: $r"
failed=1
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📝 Info: Gate still ignores skipped dependencies by design

The updated gate now prints each dependency result before deciding whether to fail, but it still only treats failure and cancelled as blocking states. That preserves the previous semantics from the base version and matches the added branch-protection comment: path-filtered reusable workflows can be skipped without blocking the single required all-checks status. I did not flag this as a bug because changes and reuse are unconditional, while skit, ui, plugins, and e2e are explicitly guarded by path filters in .github/workflows/ci.yml:57-99, so accepting skipped is intentional rather than an accidental bypass.

Open in Devin Review (Staging)

Was this helpful? React with 👍 or 👎 to provide feedback.

Debug

Playground

Comment thread .github/workflows/ci.yml
Comment on lines +133 to +144
failed=0
for i in "${!names[@]}"; do
r="${results[$i]}"
printf ' %-10s %s\n' "${names[$i]}" "$r"
if [[ "$r" == "failure" || "$r" == "cancelled" ]]; then
echo "::error::CI check failed or was cancelled ($r)"
exit 1
echo "::error::${names[$i]}: $r"
failed=1
fi
done
echo "All checks passed or were appropriately skipped."

if [[ "$failed" -ne 0 ]]; then
exit 1
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📝 Info: Accumulating failures changes reporting, not pass/fail behavior

The old loop exited on the first failed/cancelled dependency; the new loop records failed=1, continues printing all dependency statuses, and exits once after the loop. This is a semantic change in log output only: any dependency result of failure or cancelled still makes all-checks exit nonzero, while all-success/all-skipped-where-allowed runs still pass. I therefore did not report this as a behavior bug.

Open in Devin Review (Staging)

Was this helpful? React with 👍 or 👎 to provide feedback.

Debug

Playground

@codecov
Copy link
Copy Markdown

codecov Bot commented May 17, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 65.91%. Comparing base (45febdb) to head (60addb7).

Additional details and impacted files
@@           Coverage Diff           @@
##             main     #465   +/-   ##
=======================================
  Coverage   65.91%   65.91%           
=======================================
  Files         217      217           
  Lines       57529    57529           
  Branches     1597     1680   +83     
=======================================
  Hits        37921    37921           
  Misses      19602    19602           
  Partials        6        6           
Flag Coverage Δ
backend 64.99% <ø> (ø)
ui 75.07% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

Components Coverage Δ
core 84.29% <ø> (ø)
engine 75.71% <ø> (ø)
api 84.73% <ø> (ø)
nodes 67.41% <ø> (ø)
server 57.16% <ø> (ø)
plugin-native 70.93% <ø> (ø)
plugin-wasm 6.37% <ø> (ø)
ui-services 74.73% <ø> (ø)
ui-components 60.49% <ø> (ø)
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant