Prepare release 1.6.1.test.only.rc1 - #516
Closed
GregoryTravis wants to merge 7 commits into
Closed
Conversation
Adds a script-driven release pipeline modeled on sdk-python (scripts/prepare_release.py + .github/workflows/release-publish.yml). Prep script (scripts/prepare_release.rb): - Bumps Temporalio::VERSION in temporalio/lib/temporalio/version.rb - Rolls CHANGELOG Unreleased into a dated [v<version>] section and re-seeds an empty Unreleased with the six standard headers - Refreshes temporalio/Gemfile.lock via bundle lock - Creates chore/release-<version> off origin/main, commits, pushes, and opens the prep PR via gh Rollback script (scripts/rollback_release.rb): - Cancels a pending Release Publish run (auto-discovered or --run-id) - Reverts the merged "Prepare release <v>" commit on main via a chore/rollback-<v> PR - Handles both merge-commit and squash-merge histories Workflows: - release-publish.yml: single workflow_dispatch on main. Reuses build-gems.yml, verifies version + changelog + full platform set, publishes via gems-publish.yml, smoke-tests from rubygems.org, creates a draft GitHub release - gems-publish.yml: reusable workflow_call-only publish step, using RubyGems Trusted Publishing (OIDC). Only file in the repo that runs gem push. Gated by the rubygems GitHub environment - build-gems.yml: added workflow_dispatch and workflow_call triggers alongside the existing push trigger Helpers: - .github/scripts/release_verify.rb: validate-version, changelog-notes, verify-dist subcommands used by release-publish.yml - .github/actions/release-smoke-package: composite action for post-publish install-and-run smoke test CHANGELOG: marks Breaking Changes with 💥 emoji per sdk-python convention, including current Unreleased and historical v1.5.0 sections. Tests: 21 prepare_release cases + 15 rollback_release cases, 100 assertions total, using stdlib minitest. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
# Conflicts: # .github/workflows/gems-publish.yml # .github/workflows/release-publish.yml
Allows the release branch to be based off a ref other than origin/main. Immediate use: full pre-merge rehearsal of the release automation (base the release branch off the automation branch itself, since main doesn't yet contain the real prep script or release-publish pipeline). Also useful for future hotfix flows that branch a release off a releases/* branch rather than main. Refs must be in origin/BRANCH form; the script fetches the specified branch from origin before creating the release branch off it. The default remains origin/main. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
The previous reference `rubygems/configure-rubygems-credentials-action@main` was hallucinated; that repo does not exist. The real action is `rubygems/configure-rubygems-credentials` (without the `-action` suffix), verified as what `rubygems/release-gem@v1` uses internally for the OIDC token exchange. Pin to v2.1.0 (SHA dc5a8d8553e6ee01fc26761a49e99e733d17954a), matching the SHA-pinning convention used elsewhere in this repo. The action fits our workflow shape without other changes: it does the OIDC exchange with rubygems.org, configures env vars that the subsequent `gem push` loop reads, and pushes nothing itself. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
The previous wait job polled rubygems.org's JSON API (/api/v1/versions/temporalio.json), but `gem install` reads from a different service — rubygems.org's compact-index at index.rubygems.org/info/temporalio, served through a separate Fastly CDN configuration with independent cache TTLs. In one live test push, the JSON endpoint reported the new version within seconds while the compact-index still returned a stale version list on 2/3 smoke-test runners, causing `gem install` to fail with "Could not find a valid gem". Waiting on the same endpoint that `gem install` reads eliminates that race. Also hardcodes the index host (index.rubygems.org) since this workflow only ever publishes to rubygems.org. If we needed to support other hosts in the future, the index-host derivation would need updating. Co-Authored-By: Claude Opus 4.7 <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
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.
Prepare release 1.6.1.test.only.rc1.