Skip to content

Prepare release 1.6.1.test.only.rc1 - #516

Closed
GregoryTravis wants to merge 7 commits into
mainfrom
chore/release-1.6.1.test.only.rc1
Closed

Prepare release 1.6.1.test.only.rc1#516
GregoryTravis wants to merge 7 commits into
mainfrom
chore/release-1.6.1.test.only.rc1

Conversation

@GregoryTravis

Copy link
Copy Markdown
Contributor

Prepare release 1.6.1.test.only.rc1.

GregoryTravis and others added 6 commits August 3, 2026 13:56
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>
@GregoryTravis
GregoryTravis requested a review from a team as a code owner August 4, 2026 18:13
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>
@GregoryTravis
GregoryTravis deleted the chore/release-1.6.1.test.only.rc1 branch August 4, 2026 20:38
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