You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
chore(ENG-14534): send a release event to downstream repositories - #451
Each CLI release has to update other repositories, such as the Homebrew tap and cloudsmith-cli-action, and more are planned. Before this PR, the release workflow held the bump logic for each of those repositories as inline YAML. The tap and action jobs were near duplicates, and you could not run either one outside a workflow run.
After this PR, each downstream repository owns its own change:
One event from the CLI. The new notify-downstream-repos job runs after publish-github. It sends a cloudsmith-cli-release event with the version to each repository in its matrix. To add a repository, add its name to the matrix.
One shared action for the PR..github/actions/open-cli-bump-pr is a composite action that downstream workflows call. It clones the calling repository, runs that repository's bump command, and opens or updates a PR from cloudsmith-bot. It keeps the behaviour of the old jobs:
It uses one release/cloudsmith-cli branch.
A newer release replaces a bump that is not merged yet.
An older release never replaces a newer one.
With merge: "true", it squash-merges the PR when the checks pass.
This PR removes publish-homebrew, publish-action, the Homebrew template, and the setup-cloudsmith-bot-git action that the earlier commits of this PR added.
Secrets.DOWNSTREAM_RELEASE_PUSH_TOKEN must be able to send repository_dispatch to each downstream repository, which needs contents write access. The tap and the action repository also need DOWNSTREAM_RELEASE_PUSH_TOKEN and CLOUDSMITH_BOT_SSH_KEY as their own secrets. A PR opened with GITHUB_TOKEN does not start their checks. Without DOWNSTREAM_RELEASE_PUSH_TOKEN, the notify-downstream-repos job fails. After this merges, nothing uses TAP_PUSH_TOKEN.
Order change. The tap now updates after the GitHub release is published, not before. That lets the tap read SHA256SUMS without authentication.
Tests. The workflows have no tests. zizmor and pre-commit pass. actionlint 1.7.12 does not know the queue key in concurrency.
but this doesn't seem to have good outcomes for a few different reasons
Changelog wouldn't get updated
Renovate runs on its own cycle rather than insanely when we do a release
Yeah, renovate, etc. Could in theory solve this. Maybe we could look at some structural schemas for the cloudsmith CLI action. See if theres a way to get it installing using a dependabot supported package manager like homebrew or winget?
Otherwise I'm not going to block this solution. It would be nice to see if we can let dependabot pick up the changes though
The reason will be displayed to describe this comment to others. Learn more.
LGTM - I've updated the token to be a more generic name DOWNSTREAM_RELEASE_PUSH_TOKEN and replaced the current TAP_PUSH token so that we can use it for both homebrew/gha (and anything else in the future).
cloudsmith-iduffy
changed the title
feat(ENG-14534): open a cloudsmith-cli-action bump PR on each release
feat(ENG-14534): send a release event to downstream repositories
Oct 19, 2026
Add a publish-action release job. It clones cloudsmith-cli-action as
cloudsmith-bot and runs the action's scripts/bump-cli-version.sh. Then it
makes a signed commit and opens a pull request, as publish-homebrew does
for the tap. Without the ACTION_PUSH_TOKEN secret, the job skips.
Move the Cloudsmith Bot commit-signing setup into the
setup-cloudsmith-bot-git composite action, which both jobs use.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Rebuild one release/cloudsmith-cli branch from the action master on each
CLI release, and update the open pull request. Two CLI releases before a
merge then cannot produce two pull requests with the same action version.
Run the job in one concurrency group.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Read the pin on the open release/cloudsmith-cli pull request before the
bump. When that pin is newer than this release, skip the job, so that a
re-run of an older CLI release cannot replace a newer pending bump.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Keep all pending publish-action jobs in the concurrency queue. A
re-run of an older tag no longer cancels a newer pending release.
Check the bump pull request after the push. When it closed during the
update, start the update again from the latest master.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Replace the publish-homebrew and publish-action jobs with one
notify-downstream-repos job. The job sends a cloudsmith-cli-release
event with the version to each repository in its matrix. Each
repository owns the change to its files and runs its own workflow.
Add the open-cli-bump-pr composite action for those workflows. It runs
the bump command of the repository in a clone and opens or updates a
pull request from Cloudsmith Bot. A newer release replaces a bump that
is not merged yet, and an older release never replaces a newer one.
The script also runs locally, with --dry-run to show the commit only.
Move the Homebrew formula template to the tap repository.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Remove the --dry-run option and the retry when the bump pull request
closes during the update. Remove the test script of open-cli-bump-pr.
Remove the check for DOWNSTREAM_RELEASE_PUSH_TOKEN, so that a release
without the token fails instead of skipping the event.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
cloudsmith-iduffy
changed the title
feat(ENG-14534): send a release event to downstream repositories
chore(ENG-14534): send a release event to downstream repositories
Oct 19, 2026
- Compare the versions before the script downloads SHA256SUMS. A re-run for
the pinned version or an older one then does not need the release assets.
- Ignore __pycache__/. The import of render-formula-version writes bytecode,
and the bump action stages all changes with git add --all.
- Try the download again on all OSError values. A read timeout raises
TimeoutError, which is not a URLError.
- Pin open-cli-bump-pr to the merge commit of cloudsmith-io/cloudsmith-cli#451.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
cloudsmith-iduffy
added a commit
to cloudsmith-io/homebrew-cloudsmith-cli
that referenced
this pull request
Oct 19, 2026
* feat(ENG-14534): bump the formula from the CLI release event
Add the Bump Cloudsmith CLI workflow. It runs on the
cloudsmith-cli-release event that each CLI release sends, or by hand
with a version. It runs scripts/bump-cli-version.py through the
open-cli-bump-pr action of the CLI repository, which opens the pull
request from cloudsmith-bot and merges it when the checks pass.
The script reads the sha256 values from the SHA256SUMS asset of the CLI
release and verifies each published download against them. It changes
only the version, the sha256 values and the revision of the formula, so
a change to the formula in this repository now persists.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix(ENG-14534): skip the fetch for a pinned version and ignore bytecode
- Compare the versions before the script downloads SHA256SUMS. A re-run for
the pinned version or an older one then does not need the release assets.
- Ignore __pycache__/. The import of render-formula-version writes bytecode,
and the bump action stages all changes with git add --all.
- Try the download again on all OSError values. A read timeout raises
TimeoutError, which is not a URLError.
- Pin open-cli-bump-pr to the merge commit of cloudsmith-io/cloudsmith-cli#451.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
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
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.
Description
Each CLI release has to update other repositories, such as the Homebrew tap and
cloudsmith-cli-action, and more are planned. Before this PR, the release workflow held the bump logic for each of those repositories as inline YAML. The tap and action jobs were near duplicates, and you could not run either one outside a workflow run.After this PR, each downstream repository owns its own change:
notify-downstream-reposjob runs afterpublish-github. It sends acloudsmith-cli-releaseevent with the version to each repository in its matrix. To add a repository, add its name to the matrix..github/actions/open-cli-bump-pris a composite action that downstream workflows call. It clones the calling repository, runs that repository's bump command, and opens or updates a PR fromcloudsmith-bot. It keeps the behaviour of the old jobs:release/cloudsmith-clibranch.merge: "true", it squash-merges the PR when the checks pass.scripts/bump-cli-version.py(feat(ENG-14534): bump the formula from the CLI release event homebrew-cloudsmith-cli#41). It reads the sha256 values from the release'sSHA256SUMSand checks the downloads against them. The action uses its existingscripts/bump-cli-version.sh(feat(ENG-14534): pin the CLI version and release on each CLI bump cloudsmith-cli-action#49). Each repository can run its bump by hand throughworkflow_dispatch.This PR removes
publish-homebrew,publish-action, the Homebrew template, and thesetup-cloudsmith-bot-gitaction that the earlier commits of this PR added.Type of Change
Additional Notes
open-cli-bump-prreference in feat(ENG-14534): bump the formula from the CLI release event homebrew-cloudsmith-cli#41 and feat(ENG-14534): pin the CLI version and release on each CLI bump cloudsmith-cli-action#49 to the merged commit onmaster, and merge those PRs before the next CLI release. If a release ships before they merge, run theirBump Cloudsmith CLIworkflow by hand.DOWNSTREAM_RELEASE_PUSH_TOKENmust be able to sendrepository_dispatchto each downstream repository, which needs contents write access. The tap and the action repository also needDOWNSTREAM_RELEASE_PUSH_TOKENandCLOUDSMITH_BOT_SSH_KEYas their own secrets. A PR opened withGITHUB_TOKENdoes not start their checks. WithoutDOWNSTREAM_RELEASE_PUSH_TOKEN, thenotify-downstream-reposjob fails. After this merges, nothing usesTAP_PUSH_TOKEN.SHA256SUMSwithout authentication.queuekey inconcurrency.🤖 Generated with Claude Code