Repository navigation
chore: new release processes - #1090
joaodordio wants to merge 6 commits into
Conversation
Replaces the monolithic release workflow with a two-step process: - Prepare Release: bumps version, updates changelog, opens PR, creates GitHub draft release - Publish Release: promotes draft, tags master/main, publishes to distribution, posts Slack Ref: SDK release process team agreement 2026-09-11
|
This PR does not touch Either put |
… grep
- Add ref: master/main to actions/checkout in all prepare/publish workflows
so workflows always operate on the default branch regardless of dispatch ref
- Replace shell-injection-prone ${{ steps...outputs.notes }} pattern with
--notes-file using $RUNNER_TEMP/release-notes.md (safe from backticks/quotes
in changelog content)
- Treat empty [Unreleased] section as a hard error in prepare-release
- Fix CHANGELOG verification grep: grep -qE "^## \[VERSION\]" (anchored,
prevents substring matches and prefix collisions like 3.1.0 vs 3.1.0-rc1)
Replace SDK_RELEASE_TOKEN (iOS) and GITHUB_TOKEN (all repos) with a short-lived installation token from the iterable-sdk-release GitHub App, generated via actions/create-github-app-token@v1. Benefits: - App token triggers CI on PRs it creates (GITHUB_TOKEN cannot) - 1h TTL vs long-lived PAT - Workflow-scoped permissions so we can push .github/workflows/ files Required credentials (repo variable + secret, or set at org level): vars.ITERABLE_SDK_RELEASE_APP_ID secrets.ITERABLE_SDK_RELEASE_APP_PRIVATE_KEY
|
*PR body “Secrets to add”: Still only mentions What the code does: Prepare and Publish require What the spec says: This PR’s “Secrets to add” is the operator checklist for the first run. Why it conflicts: First Prepare/Publish will fail at token mint if those are missing; the PR body does not mention them. Suggested action: Document the App id/variable and private-key secret alongside |
Normalize Jira ticket input, add iterable-docs placeholder for validate-release, publish GitHub release before Maven Central, and handle prerelease vs latest.
7f2ee68 to
cf931f9
Compare
Allow Publish to re-run Maven Central when the GitHub release is already public, force the release tag to merged master HEAD, strip premature draft tags from Prepare, drop no-op version sed lines, and narrow Slack failure alerts.
Annotated -fa opens an editor on the runner; -f moves the tag without prompting.
Summary
Replaces the existing ad-hoc release workflows with a standardized two-step process across all SDKs.
No customer facing changes
Workflow 1: Prepare Release (
workflow_dispatch)Inputs:
version,ticket[Unreleased]to new version section)ghare removed)Workflow 2: Publish Release (
workflow_dispatch)Input:
versionmasterHEAD, then publishes to Maven Central (Sonatype)#eng-sdk-teamon SlackFiles changed
.github/workflows/publish-release.yml.github/workflows/prepare-release.yml(replaces legacy publish flow).github/workflows/publish.ymlSecrets and variables to configure
Before the first Prepare or Publish run, configure in repo Settings → Secrets and variables → Actions:
ITERABLE_SDK_RELEASE_APP_IDiterable-sdk-release(mint token for PR/release steps)ITERABLE_SDK_RELEASE_APP_PRIVATE_KEYSLACK_WEBHOOK#eng-sdk-teamnotification on successful/failed publishGPG_PRIVATE_KEY,GPG_PASSPHRASE,GPG_KEY_IDSONATYPE_USERNAME,SONATYPE_PASSWORDRelated: [SDK Release Process Team Agreement 2026-09-11]
No customer facing changes