Repository navigation
ci: run release-please with an app token so release PRs get CI - #16
Merged
Merged
Conversation
Every CI run on a release-please PR was parked at `action_required` and never executed. The four runs on release-please--branches--main are all `completed/action_required`, including the v0.1.0 release that shipped. Cause: this repository requires workflow approval for first-time contributors (`approval_policy: first_time_contributors`, set org-wide), and github-actions[bot] never becomes a contributor. release-please ran on the default GITHUB_TOKEN, so it authored its PRs as that bot and their workflow runs stayed pending approval. The failure mode is quiet, which is the dangerous part. GitHub Apps — CodeQL, SonarCloud, Socket — are not subject to the gate and report normally, so a release PR presents a wall of green checks while `check` and `smoke` have not run at all. v0.1.0 merged that way; it was verified by hand instead. Switch to a pleaseai-release-bot app token, matching pleaseai/shunt and pleaseai/code-intelligence. The app is installed org-wide, and both inputs already resolve for this repo: RELEASE_GITHUB_APP_CLIENT_ID is an org variable, RELEASE_GITHUB_APP_PRIVATE_KEY an org secret. Drop the job-level GITHUB_TOKEN permissions — every write now goes through the app token. This also fixes a second latent problem: a tag pushed with GITHUB_TOKEN does not trigger downstream workflows, so any future release/publish workflow keyed on the tag would silently never fire. Closes #11
|
Note Gemini is unable to generate a review for this pull request due to the file types involved not being currently supported. |
|
amondnet
marked this pull request as ready for review
July 28, 2026 08:30
Greptile SummaryThis PR updates release automation to use a short-lived GitHub App token.
Confidence Score: 5/5The PR appears safe to merge with no actionable defects identified. The token action inputs and output wiring are consistent, the workflow remains limited to pushes on main, and the default GitHub token no longer retains unnecessary write permissions.
|
| Filename | Overview |
|---|---|
| .github/workflows/release-please.yml | Correctly replaces the default workflow token with a SHA-pinned GitHub App token and passes it to the SHA-pinned release-please action. |
Reviews (1): Last reviewed commit: "ci: run release-please with an app token..." | Re-trigger Greptile
amondnet
added a commit
that referenced
this pull request
Jul 28, 2026
…s and Homebrew openhwp shipped v0.1.0 with no downloadable artifact. `deno desktop` was only ever run locally, so there was nothing for users to install and nothing a Homebrew cask could point at. Add a Release workflow, triggered by the GitHub Release that release-please publishes. That event only fires because release-please now runs with an app token (#16); under GITHUB_TOKEN it would not have. macOS signing is handled by `deno desktop` itself. With desktop.macos.codesignIdentity set it signs the bundle — including the CEF framework and the five helper apps — and applies Hardened Runtime and a secure timestamp. Verified against a local build: helper identifiers are derived correctly (dev.pleaseai.openhwp.helper, .helper.gpu), so no hand-rolled inside-out codesign pass is needed. Only notarization is manual, via notarytool with an App Store Connect API key, followed by stapling. The identity is injected in CI rather than committed: with codesignIdentity in deno.json, any contributor without the certificate would fail to build. Two details the build depends on. deno desktop has no universal-binary flag, so arm64 and x86_64 are built on separate runners and the cask carries both. And CFBundleName is derived from the --output filename, so builds land in a per-arch directory and are renamed afterwards — `-o OpenHWP-darwin-arm64.dmg` would otherwise name the application that. Signing degrades honestly: with no certificate configured the build emits a warning and produces an ad-hoc bundle, and the verify step fails if a certificate was supplied but the result is still ad-hoc. The cask is the tap's first (it holds CLI formulae today), so the job creates Casks/. packaging/homebrew/openhwp.rb is the reviewable copy of the generated template, mirroring the convention in pleaseai/shunt. JSR publishing is present but gated off. @openhwp does not exist on jsr.io yet, and the package would not be runnable regardless: it is the shell entrypoint, and the studio bundle it needs is gitignored and absent from the package. The job is documented as namespace reservation and stays disabled until the scope is created and JSR_PUBLISH_ENABLED is set.
4 of 5 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.



Summary
Every CI run on a release-please PR has been parked at
action_requiredand never executed — including the one that shipped v0.1.0.Cause. The org requires workflow approval for first-time contributors, and
github-actions[bot]never becomes one:release-please ran on the default
GITHUB_TOKEN, so it authored its PRs as that bot and their workflow runs stayed pending approval. Dependabot is unaffected (#3/#4/#5 all showCI completed/success) because it has its own trusted lane.Why this is worse than it sounds. The failure is quiet. GitHub Apps — CodeQL, SonarCloud, Socket — are not subject to the gate and report normally, so a release PR presents a wall of green checks while
checkandsmokenever ran. v0.1.0 merged in exactly that state.Fix
Switch release-please to a
pleaseai-release-botapp token, matchingpleaseai/shuntandpleaseai/code-intelligence. Shunt's workflow comment states the same rationale, so this brings openhwp in line rather than inventing a pattern.No admin action is required — everything already exists:
pleaseai-release-botapp (id 2162598)repository_selection: allvars.RELEASE_GITHUB_APP_CLIENT_IDsecrets.RELEASE_GITHUB_APP_PRIVATE_KEYJob-level
GITHUB_TOKENpermissions are dropped, since every write now goes through the app token (least privilege, and what shunt does).This also fixes a second latent problem: a tag pushed with
GITHUB_TOKENdoes not trigger downstream workflows, so any future release/publish workflow keyed on the tag would silently never fire.Verification
actions/create-github-app-token@bcd2ba4verified against upstream —gh api repos/actions/create-github-app-token/git/ref/tags/v3.2.0returns exactly that SHA, so the pin is genuinely v3.2.0 and not a copied value.deno task check,deno lint,deno fmt --checkpass.pushtomain.Follow-up on the open release PR
#15 was authored by
github-actions[bot]before this change, so its CI is still gated. Once this merges, release-please re-runs as the app and updates that branch, which should let CI run. If it doesn't, closing #15 and letting release-please recreate it clears the stale author.Separately, I verified #15 by hand in the meantime (
deno task check/lint/fmt --checkagainstc44ee37, all pass) — which also confirms the #10 fix works: it bumpsapps/desktop/deno.json0.1.0 → 0.1.1 and leaves the rootdeno.jsonuntouched.Related issue
Closes #11
Checklist
deno testsuite yet)deno lint/deno fmt --check)Summary by cubic
Run release-please with the
pleaseai-release-botapp token so release PRs get CI. Fixes stuckaction_requiredruns fromgithub-actions[bot]and lets tag pushes trigger downstream workflows.actions/create-github-app-tokento mint an app token fromvars.RELEASE_GITHUB_APP_CLIENT_IDandsecrets.RELEASE_GITHUB_APP_PRIVATE_KEY.googleapis/release-please-action; remove job-levelGITHUB_TOKENwrite permissions.pleaseai/shuntandpleaseai/code-intelligence.Written for commit 62c2354. Summary will update on new commits.