Skip to content

Commit 93a34de

Browse files
authored
Remove releases.json aliases and stable release channel support (#23755)
1 parent 8d3a770 commit 93a34de

10 files changed

Lines changed: 54 additions & 551 deletions

File tree

.github/aw/releases.json

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,5 @@
22
"$schema": "./releases.schema.json",
33
"blockedVersions": [],
44
"minimumVersion": "v0.64.4",
5-
"minRecommendedVersion": "v0.64.4",
6-
"aliases": {
7-
"latest": "latest",
8-
"stable": "v0.64.5"
9-
}
5+
"minRecommendedVersion": "v0.64.4"
106
}

.github/aw/releases.schema.json

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -31,16 +31,6 @@
3131
"description": "The minimum recommended compile-agentic version in vMAJOR.MINOR.PATCH format. Workflows compiled with a version below this will emit a warning (but not fail) at activation, nudging users to upgrade. Use an empty string to disable this check.",
3232
"pattern": "^(v[0-9]+\\.[0-9]+\\.[0-9]+)?$",
3333
"default": ""
34-
},
35-
"aliases": {
36-
"type": "object",
37-
"description": "A map of release alias names to version strings. The special value 'latest' resolves to the most recent release. Other values must be a version string in vMAJOR.MINOR.PATCH format.",
38-
"additionalProperties": {
39-
"type": "string",
40-
"pattern": "^(latest|v[0-9]+\\.[0-9]+\\.[0-9]+)$",
41-
"description": "A version string in vMAJOR.MINOR.PATCH format or the special value 'latest'"
42-
},
43-
"default": {}
4434
}
4535
}
4636
}

.github/workflows/ci.yml

Lines changed: 1 addition & 78 deletions
Original file line numberDiff line numberDiff line change
@@ -870,30 +870,13 @@ jobs:
870870
const errors = [];
871871
872872
// Check additionalProperties (only allow known keys)
873-
const allowedKeys = new Set(['$schema', 'blockedVersions', 'minimumVersion', 'minRecommendedVersion', 'aliases']);
873+
const allowedKeys = new Set(['$schema', 'blockedVersions', 'minimumVersion', 'minRecommendedVersion']);
874874
for (const key of Object.keys(config)) {
875875
if (!allowedKeys.has(key)) {
876876
errors.push(`Unknown property: '${key}'`);
877877
}
878878
}
879879
880-
// Validate aliases
881-
if ('aliases' in config) {
882-
const aliases = config.aliases;
883-
if (typeof aliases !== 'object' || aliases === null || Array.isArray(aliases)) {
884-
errors.push("'aliases' must be an object");
885-
} else {
886-
const aliasValuePattern = /^(latest|v[0-9]+\.[0-9]+\.[0-9]+)$/;
887-
for (const [alias, value] of Object.entries(aliases)) {
888-
if (typeof value !== 'string') {
889-
errors.push(`'aliases.${alias}' must be a string`);
890-
} else if (!aliasValuePattern.test(value)) {
891-
errors.push(`'aliases.${alias}' ('${value}') must be 'latest' or a version in vMAJOR.MINOR.PATCH format (e.g. 'v1.2.3')`);
892-
}
893-
}
894-
}
895-
}
896-
897880
// Validate blockedVersions
898881
if ('blockedVersions' in config) {
899882
const bv = config.blockedVersions;
@@ -2801,66 +2784,6 @@ jobs:
28012784
28022785
echo "" >> $GITHUB_STEP_SUMMARY
28032786
2804-
install-script:
2805-
name: Install Script (stable)
2806-
runs-on: ubuntu-latest
2807-
timeout-minutes: 10
2808-
permissions:
2809-
contents: read
2810-
concurrency:
2811-
group: ci-${{ github.ref }}-install-script
2812-
cancel-in-progress: true
2813-
steps:
2814-
- name: Checkout code
2815-
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
2816-
2817-
- name: Validate stable alias in releases.json
2818-
id: validate-stable
2819-
run: |
2820-
STABLE=$(jq -r '.aliases.stable // empty' .github/aw/releases.json)
2821-
echo "stable_version=$STABLE" >> $GITHUB_OUTPUT
2822-
2823-
if [ -z "$STABLE" ]; then
2824-
echo "❌ 'stable' alias is not set in releases.json"
2825-
exit 1
2826-
fi
2827-
2828-
if [ "$STABLE" = "stable" ]; then
2829-
echo "❌ 'stable' alias points to itself - misconfiguration in releases.json"
2830-
exit 1
2831-
fi
2832-
2833-
if ! echo "$STABLE" | grep -qE '^v[0-9]+\.[0-9]+\.[0-9]+$'; then
2834-
echo "❌ 'stable' alias '$STABLE' is not a valid semver version (expected vMAJOR.MINOR.PATCH)"
2835-
exit 1
2836-
fi
2837-
2838-
echo "✅ 'stable' alias resolves to a valid version: $STABLE"
2839-
2840-
- name: Run install-gh-aw.sh with stable version
2841-
run: bash install-gh-aw.sh stable
2842-
2843-
- name: Verify installation
2844-
run: |
2845-
BINARY="$HOME/.local/share/gh/extensions/gh-aw/gh-aw"
2846-
EXPECTED="${{ steps.validate-stable.outputs.stable_version }}"
2847-
2848-
if [ ! -f "$BINARY" ]; then
2849-
echo "❌ Binary not found at $BINARY"
2850-
exit 1
2851-
fi
2852-
2853-
INSTALLED_VERSION=$("$BINARY" version 2>&1 | grep -oE 'v[0-9]+\.[0-9]+\.[0-9]+' | head -1)
2854-
echo "Installed version: $INSTALLED_VERSION"
2855-
echo "Expected version: $EXPECTED"
2856-
2857-
if [ "$INSTALLED_VERSION" != "$EXPECTED" ]; then
2858-
echo "❌ Version mismatch: installed $INSTALLED_VERSION but expected $EXPECTED"
2859-
exit 1
2860-
fi
2861-
2862-
echo "✅ install-gh-aw.sh successfully installed stable release: $INSTALLED_VERSION" >> $GITHUB_STEP_SUMMARY
2863-
28642787
sh-difc-proxy:
28652788
name: DIFC Proxy sh Integration Test
28662789
runs-on: ubuntu-latest

.github/workflows/update-stable-release.yml

Lines changed: 0 additions & 151 deletions
This file was deleted.

CONTRIBUTING.md

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -545,6 +545,8 @@ This project follows the GitHub Community Guidelines. Please be respectful and i
545545
546546
Releases are triggered manually by a core team member using the GitHub Actions release workflow.
547547

548+
> **Note:** The release workflow publishes the new version as a **prerelease** on GitHub. Once the release is verified, a maintainer must **manually promote it to a full release and move the `latest` tag** so that users installing with `version: latest` receive the new version.
549+
548550
### Steps
549551

550552
1. **Launch the release action**
@@ -563,7 +565,17 @@ Releases are triggered manually by a core team member using the GitHub Actions r
563565

564566
3. **Approve the environment gate**
565567

566-
Return to the paused release run in [`github/gh-aw`](https://github.com/github/gh-aw/actions). Approve the **`gh-aw-actions-release`** environment gate. The workflow will verify that the new tag exists in `github/gh-aw-actions` and then publish the GitHub release.
568+
Return to the paused release run in [`github/gh-aw`](https://github.com/github/gh-aw/actions). Approve the **`gh-aw-actions-release`** environment gate. The workflow will verify that the new tag exists in `github/gh-aw-actions` and then publish the GitHub release as a **prerelease**.
569+
570+
4. **Promote to latest** _(manual step)_
571+
572+
After verifying the prerelease is working correctly:
573+
574+
a. **Edit the GitHub release** — go to the [Releases page](https://github.com/github/gh-aw/releases), open the new prerelease, uncheck **This is a pre-release**, and save. This promotes the release to a stable full release.
575+
576+
b. **Move the `latest` tag** — GitHub's release API resolves `latest` to the most recent non-prerelease release. Promoting the release in step (a) is sufficient for the `latest` resolution to update automatically.
577+
578+
Users who install with `version: latest` (the default) will now receive the new release.
567579

568580
### Summary
569581

@@ -583,7 +595,13 @@ Merge the sync-actions PR
583595
Approve the gh-aw-actions-release environment gate
584596
585597
586-
Release published 🎉
598+
Release published as prerelease 🎉
599+
600+
▼ (manual)
601+
Promote prerelease → full release on GitHub Releases page
602+
603+
604+
'latest' now resolves to the new version ✅
587605
```
588606

589607
## 🎯 Why This Contribution Model?

0 commit comments

Comments
 (0)