Skip to content

Commit 44c30f4

Browse files
authored
Merge pull request #293 from supabase/bo/ci/wasm-fdw-release
ci: add Wasm FDW release workflow
2 parents 55f8814 + 4b53132 commit 44c30f4

File tree

1 file changed

+72
-0
lines changed

1 file changed

+72
-0
lines changed
+72
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
name: Wasm FDW Release
2+
3+
on:
4+
push:
5+
tags:
6+
- 'wasm_*_fdw_v[0-9]+.[0-9]+.[0-9]+' # Push events to matching wasm fdw tag, i.e. wasm_snowflake_fdw_v1.0.2
7+
8+
permissions:
9+
contents: write
10+
11+
jobs:
12+
release:
13+
name: Create Wasm FDW Release
14+
runs-on: ubuntu-latest
15+
steps:
16+
- name: Checkout code
17+
uses: actions/checkout@v4
18+
19+
- name: Extract project and version from tag
20+
id: extract_info
21+
env:
22+
TAG: ${{ github.ref_name }}
23+
run: |
24+
PROJECT=`echo "${TAG}" | sed -E 's/wasm_(.*_fdw)_v.*/\1/'`
25+
VERSION=`echo "${TAG}" | sed -E 's/wasm_.*_fdw_(v.*)/\1/'`
26+
echo "PROJECT=$PROJECT" >> "$GITHUB_OUTPUT"
27+
echo "VERSION=$VERSION" >> "$GITHUB_OUTPUT"
28+
29+
- name: Set up Rust
30+
run: |
31+
# install Rust
32+
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --no-modify-path --profile minimal --default-toolchain stable && \
33+
rustup --version && \
34+
rustc --version && \
35+
cargo --version
36+
37+
# add wasm32-unknown-unknown target
38+
rustup target add wasm32-unknown-unknown
39+
40+
# install Wasm component
41+
cargo install cargo-component --locked
42+
43+
- name: Build Wasm FDW
44+
run: |
45+
cd wasm-wrappers/fdw/${{ steps.extract_info.outputs.PROJECT }}
46+
cargo component build --release --target wasm32-unknown-unknown
47+
48+
- name: Create release
49+
id: create_release
50+
env:
51+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
52+
TAG: ${{ github.ref_name }}
53+
run: |
54+
gh release create "$TAG" \
55+
--repo="$GITHUB_REPOSITORY" \
56+
--title=${{ steps.extract_info.outputs.PROJECT }}_${{ steps.extract_info.outputs.VERSION }} \
57+
--generate-notes
58+
59+
- name: Get upload url
60+
run: echo UPLOAD_URL=$(curl --silent https://api.github.com/repos/${{ github.repository }}/releases/latest | jq .upload_url --raw-output) >> $GITHUB_ENV
61+
62+
- name: Upload release asset
63+
uses: actions/upload-release-asset@v1
64+
env:
65+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
66+
PROJECT: ${{ steps.extract_info.outputs.PROJECT }}
67+
with:
68+
upload_url: ${{ env.UPLOAD_URL }}
69+
asset_path: ./wasm-wrappers/fdw/${{ env.PROJECT }}/target/wasm32-unknown-unknown/release/${{ env.PROJECT }}.wasm
70+
asset_name: ${{ env.PROJECT }}.wasm
71+
asset_content_type: application/wasm
72+

0 commit comments

Comments
 (0)