The release workflow uses a GitHub App (rather than the default GITHUB_TOKEN)
because it must bypass branch protection to push the version-bump commit and
tag to master, publish to another repository, and trigger a downstream repo.
The default GITHUB_TOKEN cannot do these things.
-
Create the App. Go to the organization's Settings → Developer settings → GitHub Apps → New GitHub App (an org-owned App is recommended over a personal one so ownership survives maintainer changes). Set:
- GitHub App name: e.g.
galaxy-helm-release-bot. - Homepage URL: the repo URL (any valid URL works).
- Webhook: uncheck Active — this App does not need to receive webhooks.
- GitHub App name: e.g.
-
Set repository permissions. Under Permissions → Repository permissions, grant the minimum the workflows need:
Permission Access Why Contents Read and write Push the version bump + tag to master, create the GitHub release, push the packaged chart toCloudVE/helm-charts, and send therepository_dispatchtogalaxy-k8s-bootPull requests Read and write Approve PRs and enable auto-merge ( auto-approve.yaml,enable-auto-merge.yaml)Issues Read and write Add the comment + reaction when /approveis used (PR comments are issues)Metadata Read-only Mandatory; selected automatically Leave everything else as No access.
-
Create the App, then generate a private key (App settings → Private keys → Generate a private key). This downloads a
.pemfile — its contents become theHELM_UPDATER_PKEYsecret. Note the App ID shown at the top of the App settings page — that becomesHELM_UPDATER_APP_ID. -
Install the App on the repositories it touches (App settings → Install App → choose the account → Only select repositories):
galaxyproject/galaxy-helmgalaxyproject/galaxy-k8s-bootCloudVE/helm-charts
Cross-organization note:
release.yamlrequests a token forgalaxy-helm,helm-charts,galaxy-k8s-boot.helm-chartslives in the CloudVE org while the others are under galaxyproject, so the App must be installed in both organizations. A single installation token only covers repositories owned by one account, so if a future change can't seeCloudVE/helm-charts, confirm the App is installed in the CloudVE org and thatactions/create-github-app-tokenis requesting the right owner. -
Add the App to the branch-protection ruleset bypass list so it can push to protected
master. SeeREPOSITORY_RULESETS_GUIDE.md— setactor_idto the App's integration ID (gh api /appafter authenticating as the App, or read it from the ruleset guide's instructions) andactor_typetoIntegration. -
Verify. Trigger a dry run via Actions → Release → Run workflow (
workflow_dispatch) with apatchbump and watch thereleasejob. If the App is misconfigured the failure will surface at the Generate GitHub App token step or the firstgit push.