Skip to content

Commit 1d0a800

Browse files
authored
Merge pull request #112 from delorenj/ci/prerelease-releases
ci: prerelease-aware release tooling (beta via @next, registry stays stable-only)
2 parents c3e1e92 + 0b79e9f commit 1d0a800

3 files changed

Lines changed: 16 additions & 8 deletions

File tree

‎.agents/skills/mcp-server-trello-release/scripts/parity-check.sh‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#!/usr/bin/env bash
22
# parity-check.sh — assert the 5 version-bearing locations in mcp-server-trello
3-
# all read the same X.Y.Z. Exit 0 if in parity, 1 otherwise.
3+
# all read the same X.Y.Z[-prerelease]. Exit 0 if in parity, 1 otherwise.
44
# Safe to run anywhere inside the repo, and safe as a CI gate.
55
set -euo pipefail
66

@@ -11,9 +11,9 @@ pkg=$(node -p "require('$ROOT/package.json').version")
1111
srv_top=$(node -p "require('$ROOT/server.json').version")
1212
srv_pkg=$(node -p "require('$ROOT/server.json').packages[0].version")
1313
# McpServer info literal — anchored on the server name so it can't match elsewhere.
14-
mcp=$(grep -A1 "name: 'trello-server'" src/index.ts | grep -oE '[0-9]+\.[0-9]+\.[0-9]+' | head -1)
14+
mcp=$(grep -A1 "name: 'trello-server'" src/index.ts | grep -oE '[0-9]+\.[0-9]+\.[0-9]+(-[0-9A-Za-z.-]+)?' | head -1)
1515
# Newest changelog heading.
16-
chlog=$(grep -m1 -oE '## \[[0-9]+\.[0-9]+\.[0-9]+\]' CHANGELOG.md | grep -oE '[0-9]+\.[0-9]+\.[0-9]+')
16+
chlog=$(grep -m1 -oE '## \[[0-9]+\.[0-9]+\.[0-9]+(-[0-9A-Za-z.-]+)?\]' CHANGELOG.md | grep -oE '[0-9]+\.[0-9]+\.[0-9]+(-[0-9A-Za-z.-]+)?')
1717

1818
printf '%-28s %s\n' "package.json version" "$pkg"
1919
printf '%-28s %s\n' "server.json version" "$srv_top"

‎.agents/skills/mcp-server-trello-release/scripts/set-version.sh‎

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
#!/usr/bin/env bash
2-
# set-version.sh <X.Y.Z> — set ALL four version literals in mcp-server-trello at
2+
# set-version.sh <X.Y.Z[-prerelease]> — set ALL four version literals in mcp-server-trello at
33
# once (package.json, server.json ×2, src/index.ts McpServer info) and flip the
44
# CHANGELOG "[Unreleased]" heading to the versioned one. Does NOT commit.
55
# This exists because `bun run versionbump` only touches package.json.
66
set -euo pipefail
77

88
NEW="${1:-}"
9-
if [[ ! "$NEW" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
10-
echo "usage: set-version.sh <X.Y.Z> (e.g. set-version.sh 1.8.0)" >&2
9+
if [[ ! "$NEW" =~ ^[0-9]+\.[0-9]+\.[0-9]+(-[0-9A-Za-z-]+(\.[0-9A-Za-z-]+)*)?$ ]]; then
10+
echo "usage: set-version.sh <X.Y.Z[-prerelease]> (e.g. set-version.sh 1.8.0 or 2.0.0-beta.0)" >&2
1111
exit 1
1212
fi
1313

@@ -22,7 +22,7 @@ node -e "const f='$ROOT/package.json',j=require(f);j.version='$NEW';require('fs'
2222
node -e "const f='$ROOT/server.json',j=require(f);j.version='$NEW';if(j.packages&&j.packages[0])j.packages[0].version='$NEW';require('fs').writeFileSync(f,JSON.stringify(j,null,2)+'\n')"
2323

2424
# 4. src/index.ts McpServer info literal (anchored on the trello-server name).
25-
perl -0pi -e "s/(name: 'trello-server',\s*\n\s*version: ')[0-9]+\.[0-9]+\.[0-9]+(')/\${1}$NEW\${2}/" src/index.ts
25+
perl -0pi -e "s/(name: 'trello-server',\s*\n\s*version: ')[0-9]+\.[0-9]+\.[0-9]+(-[0-9A-Za-z.-]+)?(')/\${1}$NEW\${2}/" src/index.ts
2626

2727
# 5. CHANGELOG heading: [Unreleased] -> [X.Y.Z] - DATE (first occurrence only).
2828
if grep -q '## \[Unreleased\]' CHANGELOG.md; then

‎.github/workflows/publish-npm.yml‎

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ jobs:
2727
outputs:
2828
package_version: ${{ steps.version.outputs.package_version }}
2929
release_ready: ${{ steps.verify-npm.outputs.release_ready }}
30+
is_prerelease: ${{ steps.version.outputs.is_prerelease }}
3031

3132
steps:
3233
- name: Checkout repository
@@ -69,6 +70,11 @@ jobs:
6970
echo "package_name=$package_name" >> "$GITHUB_OUTPUT"
7071
echo "package_version=$package_version" >> "$GITHUB_OUTPUT"
7172
echo "dist_tag=$(node scripts/npm-dist-tag.js "$package_version")" >> "$GITHUB_OUTPUT"
73+
if node -e "process.exit(/^\d+\.\d+\.\d+-[0-9A-Za-z-]/.test('$package_version') ? 0 : 1)"; then
74+
echo "is_prerelease=true" >> "$GITHUB_OUTPUT"
75+
else
76+
echo "is_prerelease=false" >> "$GITHUB_OUTPUT"
77+
fi
7278
7379
published_versions=$(node scripts/npm-published-versions.js "$package_name")
7480
if PUBLISHED_VERSIONS="$published_versions" PACKAGE_VERSION="$package_version" node -e \
@@ -148,7 +154,9 @@ jobs:
148154
exit 1
149155
150156
publish-registry:
151-
if: github.event_name == 'release' && needs.publish-npm.outputs.release_ready == 'true'
157+
# Prereleases (beta/rc) publish to npm under the `next` dist-tag only;
158+
# the official MCP Registry lists stable releases only.
159+
if: github.event_name == 'release' && needs.publish-npm.outputs.release_ready == 'true' && needs.publish-npm.outputs.is_prerelease == 'false'
152160
needs: publish-npm
153161
runs-on: ubuntu-latest
154162
permissions:

0 commit comments

Comments
 (0)