From 84c4d892ad89b52d76ca5e329ff1f14eda8c5626 Mon Sep 17 00:00:00 2001 From: Max Desiatov Date: Tue, 28 Oct 2025 17:09:34 +0000 Subject: [PATCH 1/3] Add release workflow automation to check version strings --- .github/workflows/release.yml | 22 ++++++++++++++-------- Utilities/build-release.py | 22 ++++++++++++++++++++++ 2 files changed, 36 insertions(+), 8 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index a7196592..0d75eaf3 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -13,13 +13,16 @@ jobs: runs-on: macos-15 steps: - uses: actions/checkout@v4 - - run: ./Utilities/build-release.py -o wasmkit-x86_64-apple-macos.tar.gz -- --triple x86_64-apple-macos - - run: ./Utilities/build-release.py -o wasmkit-arm64-apple-macos.tar.gz -- --triple arm64-apple-macos - - uses: actions/upload-artifact@v4 + - run: | + VERSION=$(echo ${{ github.ref_name }} | sed 's/^v//') + echo "{WASMKIT_VERSION}={$VERSION}" >> "$GITHUB_ENV" + - run: ./Utilities/build-release.py -o wasmkit-x86_64-apple-macos.tar.gz -s $WASMKIT_VERSION -- --triple x86_64-apple-macos + - run: ./Utilities/build-release.py -o wasmkit-arm64-apple-macos.tar.gz -s $WASMKIT_VERSION --triple arm64-apple-macos + - uses: actions/upload-artifact@v5 with: name: release-wasmkit-x86_64-apple-macos path: wasmkit-x86_64-apple-macos.tar.gz - - uses: actions/upload-artifact@v4 + - uses: actions/upload-artifact@v5 with: name: release-wasmkit-arm64-apple-macos path: wasmkit-arm64-apple-macos.tar.gz @@ -41,13 +44,16 @@ jobs: ./build-exec apt-get install -y llvm-15 ./build-exec ln -s /usr/bin/llvm-strip-15 /usr/bin/llvm-strip - - run: ./build-exec ./Utilities/build-release.py -o wasmkit-x86_64-swift-linux-musl.tar.gz -- --swift-sdk x86_64-swift-linux-musl - - run: ./build-exec ./Utilities/build-release.py -o wasmkit-aarch64-swift-linux-musl.tar.gz -- --swift-sdk aarch64-swift-linux-musl - - uses: actions/upload-artifact@v4 + - run: | + VERSION=$(echo ${{ github.ref_name }} | sed 's/^v//') + echo "{WASMKIT_VERSION}={$VERSION}" >> "$GITHUB_ENV" + - run: ./build-exec ./Utilities/build-release.py -o wasmkit-x86_64-swift-linux-musl.tar.gz -s $WASMKIT_VERSION -- --swift-sdk x86_64-swift-linux-musl + - run: ./build-exec ./Utilities/build-release.py -o wasmkit-aarch64-swift-linux-musl.tar.gz -s $WASMKIT_VERSION -- --swift-sdk aarch64-swift-linux-musl + - uses: actions/upload-artifact@v5 with: name: release-wasmkit-x86_64-swift-linux-musl path: wasmkit-x86_64-swift-linux-musl.tar.gz - - uses: actions/upload-artifact@v4 + - uses: actions/upload-artifact@v5 with: name: release-wasmkit-aarch64-swift-linux-musl path: wasmkit-aarch64-swift-linux-musl.tar.gz diff --git a/Utilities/build-release.py b/Utilities/build-release.py index ca5fc392..fc007783 100755 --- a/Utilities/build-release.py +++ b/Utilities/build-release.py @@ -26,10 +26,32 @@ def main(): import argparse parser = argparse.ArgumentParser() parser.add_argument("-o", "--output", required=True) + parser.add_argument("-s", "--semantic-version", required=True) parser.add_argument("extra_build_args", nargs="*") args = parser.parse_args() + # Check that `README.md` has been updated with the latest version. + version_ok = False + with open(os.path.join(SOURCE_ROOT, 'README.md')) as file: + for line in file: + if f'from: "{args.semantic_version}"' in line: + version_ok = True + + if not version_ok: + print("Expected README.md to contain a reference of the newly released version.", file=sys.stderr) + sys.exit(1) + + version_ok = False + with open(os.path.join(SOURCE_ROOT, 'Sources', 'CLI', 'CLI.swift')) as file: + for line in file: + if f'version: "{args.semantic_version}"' in line: + version_ok = True + + if not version_ok: + print("Expected `Sources/CLI/CLI.swift` to specify the newly released version.", file=sys.stderr) + sys.exit(1) + build_args = ["swift", "build", "-c", "release", "--product", "wasmkit-cli", "--package-path", SOURCE_ROOT] + args.extra_build_args bin_path = subprocess.check_output(build_args + ["--show-bin-path"], text=True).strip() From e0da5f0d9fd42555962203ac6953b1325514d9a1 Mon Sep 17 00:00:00 2001 From: Max Desiatov Date: Tue, 28 Oct 2025 17:12:17 +0000 Subject: [PATCH 2/3] Apply suggestions from code review --- Utilities/build-release.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Utilities/build-release.py b/Utilities/build-release.py index fc007783..86aa8eba 100755 --- a/Utilities/build-release.py +++ b/Utilities/build-release.py @@ -39,9 +39,10 @@ def main(): version_ok = True if not version_ok: - print("Expected README.md to contain a reference of the newly released version.", file=sys.stderr) + print("Expected README.md to contain a reference to the newly released version in Package.swift sample.", file=sys.stderr) sys.exit(1) + # Check that `CLI.swift` has been updated with the latest version. version_ok = False with open(os.path.join(SOURCE_ROOT, 'Sources', 'CLI', 'CLI.swift')) as file: for line in file: From 67904e42d497047aa7c1a1cab7fae7c168cd8a04 Mon Sep 17 00:00:00 2001 From: Max Desiatov Date: Tue, 28 Oct 2025 19:36:11 +0000 Subject: [PATCH 3/3] Add timeout to `build-android` job in `main.yml` --- .github/workflows/main.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index e0a38b3a..4242b88b 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -237,6 +237,7 @@ jobs: build-android: runs-on: ubuntu-24.04 + timeout-minutes: 10 strategy: matrix: include: