Skip to content

fix(ci,ca-149): release-please dispatch fallback + vscode prerelease default#39

Merged
jstuart0 merged 1 commit intomainfrom
fix/ca-149-dispatch-fallback
May 6, 2026
Merged

fix(ci,ca-149): release-please dispatch fallback + vscode prerelease default#39
jstuart0 merged 1 commit intomainfrom
fix/ca-149-dispatch-fallback

Conversation

@jstuart0
Copy link
Copy Markdown
Collaborator

@jstuart0 jstuart0 commented May 6, 2026

Summary

Fixes two related release-pipeline papercuts:

1. CA-149 — release-please tag pushes don't trigger downstream workflows

The repo already documents the canonical fix (provision RELEASE_PLEASE_TOKEN GitHub App / PAT per RELEASING.md), but the bootstrap state — using the default GITHUB_TOKEN — leaves releases half-published: tag created, but oss-release.yml (binary build, GitHub release publish) and build-images.yml don't fire because GitHub deliberately suppresses workflow-on-workflow chains driven by GITHUB_TOKEN.

This PR makes the bootstrap state self-healing without requiring any token provisioning:

  • oss-release.yml + build-images.yml gain a workflow_dispatch trigger (additive; existing push:tags continues to work)
  • release-please.yml gains a trailing step that, when the root component cuts a tag, dispatches both downstream workflows via gh workflow run --ref <tag>workflow_dispatch events are exempt from the GITHUB_TOKEN recursion guard, so this works with the default token
  • The dispatch step is a no-op when RELEASE_PLEASE_TOKEN is provisioned (avoids double-runs on top of the canonical-token push:tags)
  • Plugin component tags (sourcebridge-vscode-vX.Y.Z) are intentionally not dispatched — they're already filtered out of both downstream workflows by tag glob

2. vscode plugin auto-prerelease

The just-cut sourcebridge-vscode-v0.3.1 release was created with isPrerelease: false, which made it the project's "Latest" pointer (v0.10.0-rc.3 was still a draft awaiting oss-release.yml; v0.9.0-rc.3 was correctly prerelease; the plugin won by default).

release-please-config.json now sets "prerelease": true on the vscode plugin component. The plugin is pre-1.0 and should remain prerelease until it stabilizes. The existing sourcebridge-vscode-v0.3.1 release was already fixed manually via gh release edit --prerelease; this prevents recurrence on future plugin releases.

Test plan

  • YAML syntax validated (python3 -c "import yaml; yaml.safe_load(open(p))" for all 3 workflow files)
  • JSON syntax validated for release-please-config.json
  • Will exercise on the next release-please cycle (whichever cuts first — root or plugin)
  • If RELEASE_PLEASE_TOKEN gets provisioned later, the dispatch step's RELEASE_PLEASE_TOKEN_PRESENT check skips fallback dispatch — confirm no double-run

🤖 Generated with Claude Code

…default

Two related papercuts fixed:

1. CA-149 token gap (the documented "tags don't trigger downstream workflows
   when release-please uses GITHUB_TOKEN" problem) now self-heals via
   workflow_dispatch:

   - oss-release.yml + build-images.yml gain a workflow_dispatch trigger
     (additive; push:tags still works when RELEASE_PLEASE_TOKEN is provisioned)
   - release-please.yml gains a trailing dispatch step that, after
     release-please creates the root component's tag, invokes
     `gh workflow run oss-release.yml --ref <tag>` and
     `gh workflow run build-images.yml --ref <tag>` via the default
     GITHUB_TOKEN — workflow_dispatch is exempt from the recursion guard
     that blocks push:tags chains, so this fires cleanly.
   - The dispatch step is a no-op when secrets.RELEASE_PLEASE_TOKEN is set
     (avoids double-runs on top of the canonical-token tag push). The
     plugin component (sourcebridge-vscode-vX.Y.Z tags) is intentionally
     skipped since it's filtered out of both downstream workflows by tag
     glob anyway.

2. release-please-config.json adds `"prerelease": true` to the vscode
   plugin component. The recently-cut `sourcebridge-vscode-v0.3.1` was
   created as a non-prerelease, non-draft release, which made it the
   project's "Latest" pointer (v0.10.0-rc.3 was a draft, v0.9.0-rc.3 was
   prerelease, so the plugin won by default). The plugin is pre-1.0 and
   should always be prerelease until it stabilizes; doing it via config
   prevents the next plugin release from re-triggering the same flag
   confusion.

The existing `sourcebridge-vscode-v0.3.1` release was manually fixed
out-of-band via `gh release edit --prerelease`; this commit prevents
recurrence.

Tracked: CA-149 (canonical fix is still to provision RELEASE_PLEASE_TOKEN
per RELEASING.md; this commit makes the bootstrap state self-healing
until that's done).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@jstuart0 jstuart0 merged commit 111bd3a into main May 6, 2026
12 checks passed
@jstuart0 jstuart0 deleted the fix/ca-149-dispatch-fallback branch May 6, 2026 04:00
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