Skip to content

Commit 6aae0d5

Browse files
add wasm release and npm publish to sdk workflow
Extend the SDK release workflow to build the wasm-sdk package, publish @utexo/rln-wasm to npm, and attach the wasm artifact to GitHub releases behind a dedicated publish flag.
1 parent ae70704 commit 6aae0d5

1 file changed

Lines changed: 89 additions & 2 deletions

File tree

.github/workflows/release-sdk.yaml

Lines changed: 89 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
name: Release SDK (Swift + Kotlin)
1+
name: Release SDK (Swift + Kotlin + WASM)
22

33
on:
44
workflow_dispatch:
@@ -12,6 +12,11 @@ on:
1212
required: false
1313
default: true
1414
type: boolean
15+
publish_to_npm:
16+
description: "Publish WASM package to npm"
17+
required: false
18+
default: true
19+
type: boolean
1520

1621
permissions:
1722
contents: write
@@ -30,6 +35,7 @@ jobs:
3035
version: ${{ steps.resolve.outputs.version }}
3136
tag: ${{ steps.resolve.outputs.tag }}
3237
publish_to_maven: ${{ steps.resolve.outputs.publish_to_maven }}
38+
publish_to_npm: ${{ steps.resolve.outputs.publish_to_npm }}
3339
steps:
3440
- name: Resolve version
3541
id: resolve
@@ -38,9 +44,83 @@ jobs:
3844
VERSION="${RAW_VERSION#v}"
3945
TAG="v${VERSION}"
4046
PUBLISH_TO_MAVEN="${{ inputs.publish_to_maven }}"
47+
PUBLISH_TO_NPM="${{ inputs.publish_to_npm }}"
4148
echo "version=${VERSION}" >> "$GITHUB_OUTPUT"
4249
echo "tag=${TAG}" >> "$GITHUB_OUTPUT"
4350
echo "publish_to_maven=${PUBLISH_TO_MAVEN}" >> "$GITHUB_OUTPUT"
51+
echo "publish_to_npm=${PUBLISH_TO_NPM}" >> "$GITHUB_OUTPUT"
52+
53+
wasm-sdk:
54+
name: Build WASM SDK and publish npm
55+
runs-on: ubuntu-latest
56+
timeout-minutes: 45
57+
needs: resolve-version
58+
steps:
59+
- name: Checkout repository
60+
uses: actions/checkout@v4
61+
with:
62+
submodules: true
63+
64+
- name: Setup Rust
65+
uses: actions-rust-lang/setup-rust-toolchain@v1
66+
with:
67+
toolchain: 1.88.0
68+
rustflags: ""
69+
70+
- name: Add wasm32 target
71+
run: rustup target add wasm32-unknown-unknown
72+
73+
- name: Install wasm-pack
74+
run: cargo install wasm-pack@0.14.0
75+
76+
- name: Build WASM package
77+
run: |
78+
cd bindings/wasm-sdk
79+
wasm-pack build --target web --release --out-dir pkg
80+
81+
- name: Setup Node.js
82+
uses: actions/setup-node@v4
83+
with:
84+
node-version: "20"
85+
registry-url: "https://registry.npmjs.org"
86+
87+
- name: Set WASM package version and metadata
88+
working-directory: bindings/wasm-sdk/pkg
89+
run: |
90+
VERSION="${{ needs.resolve-version.outputs.version }}"
91+
node -e "
92+
const fs = require('fs');
93+
const pkg = JSON.parse(fs.readFileSync('package.json', 'utf8'));
94+
pkg.name = '@utexo/rln-wasm';
95+
pkg.version = process.env.VERSION;
96+
pkg.repository = { type: 'git', url: 'https://github.com/UTEXO-Protocol/rgb-lightning-node.git' };
97+
fs.writeFileSync('package.json', JSON.stringify(pkg, null, 2) + '\n');
98+
"
99+
env:
100+
VERSION: ${{ needs.resolve-version.outputs.version }}
101+
102+
- name: Copy README into package
103+
run: cp bindings/wasm-sdk/README.md bindings/wasm-sdk/pkg/README.md
104+
105+
- name: Publish WASM package to npm
106+
if: needs.resolve-version.outputs.publish_to_npm == 'true'
107+
working-directory: bindings/wasm-sdk/pkg
108+
run: npm publish --access public
109+
env:
110+
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
111+
112+
- name: Package WASM release artifact
113+
run: |
114+
VERSION="${{ needs.resolve-version.outputs.version }}"
115+
mkdir -p release
116+
(cd bindings/wasm-sdk && tar -czf "../../release/rln-wasm-sdk-pkg-${VERSION}.tar.gz" pkg/)
117+
118+
- name: Upload WASM bundle
119+
uses: actions/upload-artifact@v4
120+
with:
121+
name: wasm-sdk-release
122+
if-no-files-found: error
123+
path: release/rln-wasm-sdk-pkg-${{ needs.resolve-version.outputs.version }}.tar.gz
44124

45125
kotlin-android:
46126
name: Build Kotlin Android and publish Maven
@@ -259,7 +339,7 @@ jobs:
259339
github-release:
260340
name: Publish GitHub release
261341
runs-on: ubuntu-latest
262-
needs: [resolve-version, kotlin-android, swift-ios]
342+
needs: [resolve-version, kotlin-android, swift-ios, wasm-sdk]
263343
steps:
264344
- name: Download release artifacts
265345
uses: actions/download-artifact@v4
@@ -278,11 +358,18 @@ jobs:
278358
Includes release bundles for:
279359
- Swift XCFramework
280360
- Kotlin Android bindings + JNI artifacts
361+
- WASM SDK package (`@utexo/rln-wasm`)
362+
363+
npm:
364+
```bash
365+
npm install @utexo/rln-wasm@${{ needs.resolve-version.outputs.version }}
366+
```
281367
draft: false
282368
prerelease: ${{ contains(needs.resolve-version.outputs.version, 'alpha') || contains(needs.resolve-version.outputs.version, 'beta') || contains(needs.resolve-version.outputs.version, 'rc') }}
283369
files: |
284370
release-assets/**/rgb-lightning-node-swift-${{ needs.resolve-version.outputs.version }}.zip
285371
release-assets/**/rgb-lightning-node-kotlin-android-${{ needs.resolve-version.outputs.version }}.zip
372+
release-assets/**/rln-wasm-sdk-pkg-${{ needs.resolve-version.outputs.version }}.tar.gz
286373
env:
287374
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
288375

0 commit comments

Comments
 (0)