1+ name : Build and Publish Release Candidate libpq-query 🏗
2+
3+ on :
4+ workflow_dispatch :
5+
6+ jobs :
7+ make-release-candidate :
8+ runs-on : ubuntu-latest
9+ steps :
10+ - name : Checkout Repository 📥
11+ uses : actions/checkout@v4
12+
13+ - name : Setup Node.js 🌐
14+ uses : actions/setup-node@v4
15+ with :
16+ node-version : ' 20.x'
17+ cache : ' yarn'
18+
19+ - name : Configure Git 🛠
20+ run : |
21+ git config user.name "LaunchQL"
22+ git config user.email "[email protected] " 23+
24+ - name : Release candidate 🧪
25+ run : |
26+ git fetch
27+ npm version prerelease --preid=rc
28+ git push
29+ env :
30+ GH_TOKEN : ${{ secrets.GITHUB_TOKEN }}
31+
32+ build-artifacts :
33+ needs : make-release-candidate
34+ runs-on : ${{ matrix.os }}
35+ strategy :
36+ matrix :
37+ os : [macos-latest, ubuntu-latest]
38+ steps :
39+ - name : Checkout Repository 📥
40+ uses : actions/checkout@v4
41+
42+ - name : Setup Node.js 🌐
43+ uses : actions/setup-node@v4
44+ with :
45+ node-version : ' 20.x'
46+ cache : ' yarn'
47+
48+ - name : Install and Build 📦
49+ run : |
50+ yarn
51+ yarn binary:build
52+
53+ - name : Save Artifacts For Supabase CDN 🏗
54+ uses : actions/upload-artifact@v4
55+ with :
56+ name : build-supabase-artifact-${{ matrix.os }}
57+ path : ' ./build/stage/libpg-query-node/'
58+
59+ - name : Save Artifacts For NPM 🏗
60+ uses : actions/upload-artifact@v4
61+ with :
62+ name : build-npm-artifact-${{ matrix.os }}
63+ path : |
64+ ${{ matrix.os == 'macos-latest' && './libpg_query/osx/libpg_query.a' ||
65+ matrix.os == 'ubuntu-latest' && './libpg_query/linux/libpg_query.a' }}
66+
67+ build-wasm :
68+ needs : build-artifacts
69+ runs-on : ubuntu-latest
70+ steps :
71+ - name : Checkout Repository 📥
72+ uses : actions/checkout@v4
73+
74+ - name : Setup Node.js 🌐
75+ uses : actions/setup-node@v4
76+ with :
77+ node-version : ' 20.x'
78+ cache : ' yarn'
79+
80+ - name : Install and Build 🚀
81+ run : |
82+ yarn
83+
84+ - name : Install Emscripten ✍🏻
85+ run : |
86+ sudo apt-get update
87+ sudo apt-get install cmake python3 python3-pip
88+ git clone --branch 3.1.59 --depth 1 https://github.com/emscripten-core/emsdk.git
89+ cd emsdk
90+ ./emsdk install 3.1.59
91+ ./emsdk activate 3.1.59
92+ source ./emsdk_env.sh
93+
94+ - name : Build with Emscripten 🏗
95+ run : |
96+ source ./emsdk/emsdk_env.sh
97+ emmake make
98+ emmake make build
99+
100+ - name : Archive production artifacts 🏛
101+ uses : actions/upload-artifact@v4
102+ with :
103+ name : wasm-artifacts
104+ path : wasm
105+
106+ prepare-and-publish :
107+ needs : build-wasm
108+ runs-on : ubuntu-latest
109+ steps :
110+ - name : Checkout Repository 📥
111+ uses : actions/checkout@v4
112+
113+ - name : Get Artifacts 📚
114+ uses : actions/download-artifact@v4
115+ with :
116+ path : downloaded-artifacts
117+
118+ - name : Prepare artifacts 📦
119+ run : |
120+ find ./downloaded-artifacts/
121+ cp ./downloaded-artifacts/build-npm-artifact-ubuntu-latest/libpg_query.a ./libpg_query/linux/libpg_query.a
122+ cp ./downloaded-artifacts/build-npm-artifact-macos-latest/libpg_query.a ./libpg_query/osx/libpg_query.a
123+ cp ./downloaded-artifacts/wasm-artifacts/libpg-query.js ./wasm/libpg-query.js
124+ cp ./downloaded-artifacts/wasm-artifacts/libpg-query.wasm ./wasm/libpg-query.wasm
125+ rm -rf ./downloaded-artifacts
126+
127+ # - name: Setup AWS CLI
128+ # run: sudo apt-get update && sudo apt-get install awscli -y
129+
130+ # - name: Configure AWS Credentials
131+ # uses: aws-actions/configure-aws-credentials@v4
132+ # with:
133+ # aws-access-key-id: ${{ secrets.SUPABASE_AWS_KEY }}
134+ # aws-secret-access-key: ${{ secrets.SUPABASE_AWS_SECRET }}
135+ # aws-region: us-east-1
136+
137+ # - name: List Bucket Contents
138+ # run: aws s3 ls s3://supabase-public-artifacts-bucket/
139+
140+ # - name: Publish to NPM 🚀
141+ # run: |
142+ # npm publish
143+ # env:
144+ # NODE_AUTH_TOKEN: ${{secrets.NPM_API_KEY}}
0 commit comments