Skip to content

ci: stop recurring Release + security workflow failures on main#47

Merged
WomB0ComB0 merged 1 commit into
mainfrom
fix/ci-recurring-failures
May 10, 2026
Merged

ci: stop recurring Release + security workflow failures on main#47
WomB0ComB0 merged 1 commit into
mainfrom
fix/ci-recurring-failures

Conversation

@WomB0ComB0
Copy link
Copy Markdown
Member

@WomB0ComB0 WomB0ComB0 commented May 10, 2026

Summary

Two workflows have been failing on every push to main since #34 landed. Both are structural issues, not regressions in product code. This PR stops the noise and documents the path back to automation.

security workflow — startup_failure

The fix in #34 replaced secrets: inherit with an explicit SEMGREP_APP_TOKEN mapping to clear zizmor's secrets-inherit warning (#43). But the upstream reusable workflow at resq-software/.github/.github/workflows/security-scan.yml does not declare a workflow_call.secrets: contract, and GitHub Actions rejects any caller that tries to pass named secrets to a workflow with no declared secrets surface — the run terminates as startup_failure before any job starts. That's why the security scan hasn't run on main since #34 merged, which is also why zizmor alerts #29-#43 haven't auto-closed even though the underlying findings are gone.

Fix:

  • Revert to secrets: inherit with a comment explaining why.
  • Add .github/zizmor.yml ignoring the secrets-inherit rule only on security.yml, pointing at the upstream limitation. As soon as the upstream workflow declares its secrets, drop the ignore and switch back to explicit SEMGREP_APP_TOKEN.

Release workflow — failure

python-semantic-release pushes the version-bump commit + tag straight to main. The default-branch-baseline ruleset (id 15191038) requires every change to main to come through a PR; bypass mode is pull_request, so even bypass actors must use a PR. The bot's push is rejected with GH013: Repository rule violations.

Fix:

  • Drop the push: branches: [main] trigger so the workflow stops auto-running on every commit. workflow_dispatch remains.
  • Header comment in publish.yml documents the two long-term paths back to automation:
    1. Add a dedicated GitHub App / resq-sw PAT to bypass_actors on ruleset 15191038 with bypass_mode: always.
    2. Restructure to a PR-based release flow (semantic-release with commit: false, push: false + peter-evans/create-pull-request).

Validation

$ uvx --from zizmor zizmor .github/workflows/
19 findings (1 ignored, 17 suppressed, 1 fixable):
  0 informational, 0 low, 0 medium, 1 high

The 1 remaining high (cache-poisoning in api-docs.yml:99) is unrelated to recurring-CI failures and tracked separately in #48.

Expected behavior after merge

Two workflows have been failing on every push to main since #34
landed.

security.yml — startup_failure
  The fix in #34 replaced `secrets: inherit` with an explicit
  `SEMGREP_APP_TOKEN: ${{ ... }}` mapping to address zizmor's
  `secrets-inherit` warning. The upstream reusable workflow at
  `resq-software/.github/.github/workflows/security-scan.yml` does
  not declare a `workflow_call.secrets:` contract, and GitHub
  Actions rejects callers that try to pass named secrets to a
  workflow with no declared secrets surface — the run terminates
  as `startup_failure` before any job starts.

  Revert to `secrets: inherit` and pin the rationale in a comment.
  Add `.github/zizmor.yml` to ignore the `secrets-inherit` finding
  on `security.yml` only, with a TODO pointing to the upstream
  workflow update needed to make explicit secret passing valid
  again.

publish.yml — `Release` failure
  `python-semantic-release` pushes the version-bump commit + tag
  back to main directly. The `default-branch-baseline` ruleset
  (id 15191038) requires every change to main to come through a
  PR; bypass mode is `pull_request`, so even bypass actors cannot
  push directly. The bot's push is rejected with
    remote: error: GH013: Repository rule violations found
    remote: - Changes must be made through a pull request.
    remote: - Required status check "required" is expected.

  Drop the `push: branches: [main]` trigger so the workflow no
  longer fires on every commit. `workflow_dispatch` remains, so
  releases can still be cut manually from the Actions tab or with
  `gh workflow run Release.yml`. Long-term, restore automation by
  either adding a bot to ruleset bypass with `bypass_mode: always`
  or restructuring to a PR-based release flow (semantic-release
  with `commit: false, push: false` + `peter-evans/create-pull-
  request`). The workflow file's header comment captures both
  paths.
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented May 10, 2026

Warning

Rate limit exceeded

@WomB0ComB0 has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 38 minutes and 53 seconds before requesting another review.

You’ve run out of usage credits. Purchase more in the billing tab.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 611eaaf1-ca79-4c96-aba3-bad6991eda02

📥 Commits

Reviewing files that changed from the base of the PR and between 5adde56 and f5dfc58.

📒 Files selected for processing (3)
  • .github/workflows/publish.yml
  • .github/workflows/security.yml
  • .github/zizmor.yml
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/ci-recurring-failures

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 and usage tips.

Copy link
Copy Markdown

@gemini-code-assist gemini-code-assist Bot left a comment

Choose a reason for hiding this comment

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

Code Review

This pull request introduces a zizmor configuration file to manage GitHub Actions security linting, specifically ignoring secrets-inherit for the security workflow. Feedback suggests moving the configuration file to the repository root for automatic discovery and updating the ignore pattern to use the full relative path for security.yml to ensure the rule is correctly applied.

Comment thread .github/zizmor.yml
Comment thread .github/zizmor.yml
@WomB0ComB0 WomB0ComB0 merged commit e5fd1e2 into main May 10, 2026
32 checks passed
@WomB0ComB0 WomB0ComB0 deleted the fix/ci-recurring-failures branch May 10, 2026 14:30
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