From 0f269b891882a6695438ec0fdb212068826e8fb2 Mon Sep 17 00:00:00 2001 From: Rasmus Porsager Date: Fri, 25 Oct 2024 15:41:17 +0200 Subject: [PATCH] New release script for individual binary installs --- .github/workflows/build.yml | 12 +++--- .github/workflows/release.yml | 79 +++++++++++++++++++++++++++++++++++ src/uws.js | 2 +- 3 files changed, 86 insertions(+), 7 deletions(-) create mode 100644 .github/workflows/release.yml diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index c7240445..657f25be 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -13,7 +13,7 @@ jobs: - name: Update binaries run: | $ErrorActionPreference = 'SilentlyContinue' - git clone --recursive https://github.com/uNetworking/uWebSockets.js.git + git clone --recursive https://github.com/${{ github.repository }}.git cd uWebSockets.js nmake git fetch origin binaries:binaries @@ -23,7 +23,7 @@ jobs: git config --global user.email "alexhultman@gmail.com" git config --global user.name "Alex Hultman" git commit -a -m "[GitHub Actions] Updated windows-latest binaries" - git push "https://unetworkingab:${{ secrets.SECRET }}@github.com/uNetworking/uWebSockets.js" binaries + git push "https://unetworkingab:${{ secrets.SECRET }}@github.com/${{ github.repository }}" binaries git checkout master -- tests/smoke.js npm install ws node tests/smoke.js @@ -39,7 +39,7 @@ jobs: sudo apt update || true brew install go || true sudo apt install -y g++-aarch64-linux-gnu || true - git clone --recursive https://github.com/uNetworking/uWebSockets.js.git + git clone --recursive https://github.com/${{ github.repository }}.git cd uWebSockets.js make git fetch origin binaries:binaries @@ -52,7 +52,7 @@ jobs: git config --global user.email "alexhultman@gmail.com" git config --global user.name "Alex Hultman" git commit -a -m "[GitHub Actions] Updated ${{ matrix.os }} binaries" || true - git push "https://unetworkingab:${{ secrets.SECRET }}@github.com/uNetworking/uWebSockets.js" binaries + git push "https://unetworkingab:${{ secrets.SECRET }}@github.com/${{ github.repository }}" binaries git checkout master -- tests/smoke.js npm install ws node tests/smoke.js @@ -66,7 +66,7 @@ jobs: os: ubuntu20.04 steps: - name: Clone - run: git clone --recursive https://github.com/uNetworking/uWebSockets.js.git + run: git clone --recursive https://github.com/${{ github.repository }}.git - uses: uraimo/run-on-arch-action@v2.8.1 name: Compile binaries with: @@ -94,4 +94,4 @@ jobs: git config --global user.name "Alex Hultman" git add *.node *.js git commit -a -m "[GitHub Actions] Updated linux-${{ matrix.arch }} binaries" || true - git push "https://unetworkingab:${{ secrets.SECRET }}@github.com/uNetworking/uWebSockets.js" binaries + git push "https://unetworkingab:${{ secrets.SECRET }}@github.com/${{ github.repository }}" binaries diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 00000000..506cc3a2 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,79 @@ +name: Release + +on: + workflow_dispatch: + inputs: + version: + description: 'Version number for the new release' + required: true + +jobs: + release: + if: github.event_name == 'workflow_dispatch' + runs-on: ubuntu-latest + steps: + - name: Release new version + run: | + git config --global user.email "alexhultman@gmail.com" + git config --global user.name "Alex Hultman" + git clone --branch binaries --single-branch --depth 1 https://github.com/${{ github.repository }}.git + cd uWebSockets.js + + version="${{ github.event.inputs.version }}" + binaries=($(find . -type f -name "*.node" -exec basename {} .node \;)) + + declare -A abi_map=( + ["108"]="18.x" + ["115"]="20.x" + ["120"]="21.x" + ["127"]="22.x" + ["131"]="23.x" + ) + + for binary in "${binaries[@]}"; do + IFS='_' read -r os cpu abi <<< "${binary#uws_}" + node_version="${abi_map[$abi]}" + + echo '{ + "name": "@uws/'"$binary"'", + "version": "'"${version}"'", + "main": "uws.js", + "os": ["'"$os"'"], + "cpu": ["'"$cpu"'"], + "engines": { + "node": "'"$node_version"'" + } + }' > package.json + + echo 'module.exports = require("./'"$binary"'.node")' > uws.js + + rm ESM_wrapper.mjs index.d.ts + find . -name '*.node' ! -name "${binary}.node" -exec rm -f {} + + + git checkout --detach + git add -A + git commit -m "Released @uws/$binary with version $version" + git tag "v${version}-$binary" + git push "https://x-access-token:${{ secrets.SECRET }}@github.com/${{ github.repository }}" "v${version}-$binary" + git checkout binaries + done + + rm -rf *.node + + deps="" + for binary in "${binaries[@]}"; do + deps+="\"@uws/$binary\": \"github:porsager/uWebSockets.js#v${version}-$binary\",\n " + done + deps=${deps%,*} + + sed -i "s|\"optionalDependencies\": {}|\"optionalDependencies\": {\n $deps\n}|" package.json + sed -i "s|\"version\": \"[^\"]*\"|\"version\": \"${version}\"|g" package.json + sed -i "s|./uws_|@uws/uws_|g" uws.js + + git checkout --detach + git add package.json + git add *.node + git commit -m "Release $version" + + git tag "v$version" + git push "https://x-access-token:${{ secrets.SECRET }}@github.com/${{ github.repository }}" "v$version" diff --git a/src/uws.js b/src/uws.js index 6ff8b3e9..43330cbc 100644 --- a/src/uws.js +++ b/src/uws.js @@ -17,7 +17,7 @@ module.exports = (() => { try { - return require('./uws_' + process.platform + '_' + process.arch + '_' + process.versions.modules + '.node'); + return require('./uws_' + process.platform + '_' + process.arch + '_' + process.versions.modules); } catch (e) { throw new Error('This version of uWS.js (v20.51.0) supports only Node.js versions 18, 20, 22 and 23 on (glibc) Linux, macOS and Windows, on Tier 1 platforms (https://github.com/nodejs/node/blob/master/BUILDING.md#platform-list).\n\n' + e.toString()); }