|
1 | 1 | #!/bin/bash |
2 | 2 |
|
3 | | -# Unified release script for WASI releases |
| 3 | +# Release script for WASI 0.3.x releases |
4 | 4 | # |
5 | | -# This script automates the release process for both patch (0.2.x) and RC (0.3.0-rc) releases: |
| 5 | +# This script automates the release process: |
6 | 6 | # 1. Triggers the release.yml workflow to update versions and create PR |
7 | 7 | # 2. Waits for PR to be filed and CI to pass |
8 | 8 | # 3. Waits for manual PR review and merge |
9 | 9 | # 4. Creates a GitHub release to trigger publishing |
10 | 10 | # 5. Waits for publish workflow to complete (validates packages in CI) |
11 | 11 | # |
12 | 12 | # Usage: |
13 | | -# Patch release: ./release.sh --type patch --prev 0.2.8 --next 0.2.9 |
14 | | -# RC release: ./release.sh --type rc [--prev-rc-date 2025-09-16] |
| 13 | +# ./release.sh --prev 0.3.0 --next 0.3.1 |
15 | 14 |
|
16 | 15 | set -e |
17 | 16 | set -x |
18 | 17 |
|
19 | 18 | # Parse arguments |
20 | | -RELEASE_TYPE="" |
21 | 19 | PREV_VERSION="" |
22 | 20 | NEXT_VERSION="" |
23 | | -PREV_RC_DATE="" |
24 | 21 |
|
25 | 22 | while [[ $# -gt 0 ]]; do |
26 | 23 | case $1 in |
27 | | - --type) RELEASE_TYPE="$2"; shift 2 ;; |
28 | 24 | --prev) PREV_VERSION="$2"; shift 2 ;; |
29 | 25 | --next) NEXT_VERSION="$2"; shift 2 ;; |
30 | | - --prev-rc-date) PREV_RC_DATE="$2"; shift 2 ;; |
31 | 26 | -h|--help) |
32 | 27 | echo "Usage:" |
33 | | - echo " Patch release: $0 --type patch --prev <prev_version> --next <next_version>" |
34 | | - echo " RC release: $0 --type rc [--prev-rc-date <YYYY-MM-DD>]" |
| 28 | + echo " $0 --prev <prev_version> --next <next_version>" |
35 | 29 | echo "" |
36 | | - echo "Examples:" |
37 | | - echo " $0 --type patch --prev 0.2.8 --next 0.2.9" |
38 | | - echo " $0 --type rc --prev-rc-date 2025-09-16" |
39 | | - echo " $0 --type rc # First RC, no previous date" |
| 30 | + echo "Example:" |
| 31 | + echo " $0 --prev 0.3.0 --next 0.3.1" |
40 | 32 | exit 0 |
41 | 33 | ;; |
42 | 34 | *) |
|
51 | 43 | DATE="$(date +'%Y-%m-%d')" |
52 | 44 | REPO="WebAssembly/WASI" |
53 | 45 |
|
54 | | -# Configure based on release type |
55 | | -if [ "$RELEASE_TYPE" == "patch" ]; then |
56 | | - if [ -z "$PREV_VERSION" ] || [ -z "$NEXT_VERSION" ]; then |
57 | | - echo "Error: Patch release requires --prev and --next" |
58 | | - echo "Example: $0 --type patch --prev 0.2.8 --next 0.2.9" |
59 | | - exit 1 |
60 | | - fi |
61 | | - TAG="v$NEXT_VERSION" |
62 | | - PRERELEASE_FLAG="" |
63 | | - RELEASE_LABEL="Patch" |
64 | | -elif [ "$RELEASE_TYPE" == "rc" ]; then |
65 | | - NEXT_VERSION="0.3.0-rc-$DATE" |
66 | | - TAG="v$NEXT_VERSION" |
67 | | - PRERELEASE_FLAG="--prerelease" |
68 | | - RELEASE_LABEL="RC" |
69 | | -else |
70 | | - echo "Error: --type must be 'patch' or 'rc'" |
71 | | - echo "Use --help for usage information" |
| 46 | +if [ -z "$PREV_VERSION" ] || [ -z "$NEXT_VERSION" ]; then |
| 47 | + echo "Error: release requires --prev and --next" |
| 48 | + echo "Example: $0 --prev 0.3.0 --next 0.3.1" |
72 | 49 | exit 1 |
73 | 50 | fi |
| 51 | +TAG="v$NEXT_VERSION" |
74 | 52 |
|
75 | 53 | echo "============================================" |
76 | | -echo "WASI $RELEASE_LABEL Release" |
| 54 | +echo "WASI Release" |
77 | 55 | echo "============================================" |
78 | | -if [ "$RELEASE_TYPE" == "patch" ]; then |
79 | | - echo "Previous version: $PREV_VERSION" |
80 | | -else |
81 | | - echo "Previous RC date: ${PREV_RC_DATE:-'(none/first RC)'}" |
82 | | -fi |
| 56 | +echo "Previous version: $PREV_VERSION" |
83 | 57 | echo "Next version: $NEXT_VERSION" |
84 | 58 | echo "Tag: $TAG" |
85 | 59 | echo "Repository: $REPO" |
|
100 | 74 | echo "" |
101 | 75 | echo "Step 1: Triggering release.yml workflow..." |
102 | 76 |
|
103 | | -if [ "$RELEASE_TYPE" == "patch" ]; then |
104 | | - gh workflow run "release.yml" \ |
105 | | - -f release_type="patch" \ |
106 | | - -f prev_version="$PREV_VERSION" \ |
107 | | - -f next_version="$NEXT_VERSION" |
108 | | -else |
109 | | - if [ -n "$PREV_RC_DATE" ]; then |
110 | | - gh workflow run "release.yml" \ |
111 | | - -f release_type="rc" \ |
112 | | - -f prev_rc_date="$PREV_RC_DATE" |
113 | | - else |
114 | | - gh workflow run "release.yml" \ |
115 | | - -f release_type="rc" |
116 | | - fi |
117 | | -fi |
| 77 | +gh workflow run "release.yml" \ |
| 78 | + -f prev_version="$PREV_VERSION" \ |
| 79 | + -f next_version="$NEXT_VERSION" |
118 | 80 |
|
119 | 81 | # Wait for workflow to start |
120 | 82 | echo "Waiting for workflow to start..." |
@@ -180,7 +142,7 @@ echo "" |
180 | 142 | echo "Step 4: Creating GitHub release $TAG..." |
181 | 143 | sleep 5 |
182 | 144 |
|
183 | | -gh release create "$TAG" --generate-notes $PRERELEASE_FLAG |
| 145 | +gh release create "$TAG" --generate-notes |
184 | 146 | gh release view "$TAG" |
185 | 147 |
|
186 | 148 | # Step 5: Wait for publish workflow |
|
206 | 168 |
|
207 | 169 | echo "" |
208 | 170 | echo "============================================" |
209 | | -echo "✓ Release $NEXT_VERSION ($RELEASE_LABEL) completed successfully!" |
| 171 | +echo "✓ Release $NEXT_VERSION completed successfully!" |
210 | 172 | echo "============================================" |
0 commit comments