Skip to content

fix(ci): harden the tracking-issue fallback in the shared reporter - #10

Merged
gkorland merged 1 commit into
mainfrom
fix/report-scheduled-failure-hardening
Aug 13, 2026
Merged

fix(ci): harden the tracking-issue fallback in the shared reporter#10
gkorland merged 1 commit into
mainfrom
fix/report-scheduled-failure-hardening

Conversation

@gkorland

Copy link
Copy Markdown
Contributor

Summary

Follow-up to #5, addressing review feedback on the rollout PRs. Two problems with the tracking-issue fallback, both inherited from the eight copies the shared workflow replaced:

  1. jq injection / breakage (raised by Copilot on ci: add shared report-scheduled-failure reusable workflow #5) — the issue title was spliced into the --jq program, so a title containing a double quote broke the filter.
  2. Duplicate issues — deduplication went through gh issue list --search, but GitHub's search index is only eventually consistent. Two failures in quick succession each opened their own issue.

Problem 2 is not theoretical: I ran the workflow twice in a row via a temporary dispatch harness and it opened two identical issues. The --limit 100 fix originally suggested for the pagination concern would not have helped, since the issue simply is not in the index yet.

Changes

  • Match the title via env.TITLE inside the jq program instead of string-splicing it.
  • Deduplicate by a nightly-edge-failure label instead of --search. Label filtering goes through the GraphQL listing, which is immediately consistent. The label is created idempotently with gh label create --force.
  • Document the caller contract as a pinned commit SHA + explicit secret mapping, per the review feedback on the rollout PRs.

Testing

actionlint clean. Verified end to end against a temporary dispatch harness in this repo, with the webhook deliberately unset so the issue path is exercised:

before after
Title containing " and $ filter breaks issue created correctly
Two runs back to back two duplicate issues one issue + one comment

Harness, label, test issues and workflow runs have all been cleaned up.

Memory / Performance Impact

N/A — CI configuration only.

Related Issues

Follow-up to #5.

Review of the rollout PRs raised two problems with the issue fallback, both
inherited from the copies this workflow replaced:

- The issue title was spliced into the `--jq` program, so a title containing a
  double quote broke the filter. Match it through the environment instead.
- Deduplication went through `gh issue list --search`, but the search index is
  only eventually consistent: two failures in quick succession each opened
  their own issue. Verified by running the workflow twice in a row, which
  produced duplicate issues. Filter by a `nightly-edge-failure` label instead,
  which goes through the GraphQL listing and sees the issue immediately.

Also document pinning callers to a commit SHA and passing the webhook secret
explicitly rather than `secrets: inherit`.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot AI lite review requested due to automatic review settings August 13, 2026 11:06
@gkorland
gkorland merged commit 12e1ec1 into main Aug 13, 2026
2 checks passed
@gkorland
gkorland deleted the fix/report-scheduled-failure-hardening branch August 13, 2026 11:06
@coderabbitai

coderabbitai Bot commented Aug 13, 2026

Copy link
Copy Markdown

Warning

Review limit reached

@gkorland, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 99 minutes

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 1d7018bf-36af-402c-a82b-6d4ed22fec0b

📥 Commits

Reviewing files that changed from the base of the PR and between 3912a8c and 448f798.

📒 Files selected for processing (1)
  • .github/workflows/report-scheduled-failure.yml

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Pull request overview

Hardens the tracking-issue fallback path in the shared report-scheduled-failure reusable workflow to avoid jq filter breakage/injection and to prevent duplicate tracking issues when runs fail in quick succession.

Changes:

  • Switch tracking-issue lookup to match the title via env.TITLE inside the jq program (avoids quote-related jq breakage).
  • Replace --search-based dedupe with a label-based dedupe (nightly-edge-failure) and add the label on issue creation.
  • Update caller documentation to recommend pinning the reusable workflow to a full commit SHA and explicitly mapping secrets.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment on lines +21 to +24
# Pin to a full commit SHA rather than a branch: `secrets: inherit` and mutable
# refs together would let any later change here run with the caller's secrets.
# Dependabot's github-actions ecosystem updates `jobs.<id>.uses` pins, so the
# clients still get changes made here without hand-editing eight workflows.
Comment on lines +88 to +89
gh label create "$LABEL" --force \
--color d93f0b --description "Nightly CI run against falkordb/falkordb:edge is failing"
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.

2 participants