Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion .changeset/config.json
Original file line number Diff line number Diff line change
Expand Up @@ -30,5 +30,9 @@
"access": "public",
"baseBranch": "main",
"updateInternalDependencies": "patch",
"ignore": []
"ignore": [],
"snapshot": {
"useCalculatedVersion": true,
"prereleaseTemplate": "{tag}.{commit}"
}
}
93 changes: 93 additions & 0 deletions .github/workflows/npm-beta-release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
name: NPM Beta Release

on:
workflow_dispatch:
inputs:
snapshot_tag:
description: 'NPM dist-tag for the beta release'
required: true
default: 'beta'
type: choice
options:
- beta
- alpha
- rc
- preview

concurrency:
group: npm-beta-release
cancel-in-progress: false

env:
LOG_FORMAT: PRETTY
TURBO_TELEMETRY_DISABLED: 1
TURBO_API: https://cache.depot.dev
TURBO_TOKEN: ${{ secrets.DEPOT_TURBO_TOKEN }}
TURBO_TEAM: ${{ secrets.DEPOT_ORG_ID }}

jobs:
beta-release:
runs-on: ubuntu-latest
permissions:
id-token: write
steps:
- name: Checkout
uses: actions/checkout@v5
with:
fetch-depth: 0
submodules: recursive

- name: Setup Node.js
uses: actions/setup-node@v6
with:
node-version-file: .nvmrc
registry-url: 'https://registry.npmjs.org'

- name: Check for changesets
run: |
CHANGESET_COUNT=$(find .changeset -name "*.md" ! -name "README.md" ! -name "config.json" 2>/dev/null | wc -l | tr -d ' ')
if [ "$CHANGESET_COUNT" -eq 0 ]; then
echo "::error::No pending changesets found. Beta releases require pending changeset files."
echo ""
echo "To create a beta release:"
echo "1. Add a changeset: yarn changeset"
echo "2. Commit the changeset file"
echo "3. Run this workflow again"
exit 1
fi
echo "Found $CHANGESET_COUNT changeset(s)"

- name: Install dependencies
run: yarn install --immutable

- name: Create snapshot versions
run: yarn changeset version --snapshot ${{ inputs.snapshot_tag }}

- name: Get snapshot version
id: version
run: |
SNAPSHOT_VERSION=$(node -p "require('./typescript/sdk/package.json').version")
echo "snapshot=$SNAPSHOT_VERSION" >> $GITHUB_OUTPUT

- name: Build packages
run: yarn build

- name: Publish beta packages
run: yarn changeset publish --tag ${{ inputs.snapshot_tag }} --no-git-tag
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
NPM_CONFIG_PROVENANCE: true

- name: Summary
run: |
echo "### Beta Release Published" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "**Version:** \`${{ steps.version.outputs.snapshot }}\`" >> $GITHUB_STEP_SUMMARY
echo "**NPM Tag:** \`${{ inputs.snapshot_tag }}\`" >> $GITHUB_STEP_SUMMARY
echo "**Branch:** \`${{ github.ref_name }}\`" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "Install with:" >> $GITHUB_STEP_SUMMARY
echo "\`\`\`bash" >> $GITHUB_STEP_SUMMARY
echo "npm install @hyperlane-xyz/sdk@${{ inputs.snapshot_tag }}" >> $GITHUB_STEP_SUMMARY
echo "npm install @hyperlane-xyz/cli@${{ inputs.snapshot_tag }}" >> $GITHUB_STEP_SUMMARY
echo "\`\`\`" >> $GITHUB_STEP_SUMMARY
1 change: 1 addition & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@ jobs:
id: changesets
uses: changesets/action@v1
with:
title: 'chore: release npm packages'
version: yarn version:prepare
env:
NPM_CONFIG_PROVENANCE: true
Expand Down
13 changes: 10 additions & 3 deletions .github/workflows/rust-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -279,20 +279,27 @@ jobs:
# Determine final version based on release type
# workflow_dispatch always creates pre-releases
if [ "$IS_PRERELEASE" = "true" ]; then
# Pre-release: append suffix
# For prereleases, calculate the next version (like changesets does for NPM)
# This ensures prerelease versions reflect what the next release will be
# e.g., if current is 1.7.0, prerelease will be 1.8.0-preview.1 (not 1.7.0-preview.1)
OUTPUT=$(./rust/scripts/ci/determine-next-version.sh "$BASE_VERSION")
NEXT_VERSION=$(echo "$OUTPUT" | sed -n '1p')
echo "Calculated next version: $NEXT_VERSION (from base $BASE_VERSION)"

# Pre-release: append suffix to the NEXT version
if [ -n "$PRERELEASE_SUFFIX" ]; then
SUFFIX="$PRERELEASE_SUFFIX"
else
# Auto-generate preview.N
LAST_PREVIEW=$(git tag -l "agents-v${BASE_VERSION}-preview.*" | sort -V | tail -1)
LAST_PREVIEW=$(git tag -l "agents-v${NEXT_VERSION}-preview.*" | sort -V | tail -1)
if [ -z "$LAST_PREVIEW" ]; then
SUFFIX="preview.1"
else
PREVIEW_NUM=$(echo "$LAST_PREVIEW" | sed 's/.*preview\.\([0-9]*\)/\1/')
SUFFIX="preview.$((PREVIEW_NUM + 1))"
fi
fi
VERSION="${BASE_VERSION}-${SUFFIX}"
VERSION="${NEXT_VERSION}-${SUFFIX}"
TITLE="Agents $VERSION (Pre-release)"
PRERELEASE_FLAG="--prerelease"
RELEASE_TYPE="Pre-release"
Expand Down
Loading