Skip to content

Commit 5857255

Browse files
committed
ci: add workflow to deploy cdd-web-ui to github pages
1 parent 8bed4c3 commit 5857255

1 file changed

Lines changed: 110 additions & 0 deletions

File tree

Lines changed: 110 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,110 @@
1+
name: Deploy Web UI to GitHub Pages
2+
3+
on:
4+
push:
5+
branches: ['main', 'master']
6+
workflow_dispatch:
7+
8+
permissions:
9+
contents: read
10+
pages: write
11+
id-token: write
12+
13+
env:
14+
DEPLOY_LOCATION: /cdd-web-ui
15+
16+
jobs:
17+
build:
18+
runs-on: ubuntu-latest
19+
steps:
20+
- name: Checkout cdd-web-ui
21+
uses: actions/checkout@v4
22+
with:
23+
repository: 'SamuelMarks/cdd-web-ui'
24+
path: 'cdd-web-ui'
25+
26+
- name: Checkout cdd-docs-ui
27+
uses: actions/checkout@v4
28+
with:
29+
repository: 'SamuelMarks/cdd-docs-ui'
30+
path: 'cdd-docs-ui'
31+
32+
- name: Checkout cdd-ctl
33+
uses: actions/checkout@v4
34+
with:
35+
repository: 'SamuelMarks/cdd-ctl'
36+
path: 'cdd-ctl'
37+
38+
- name: Setup Node.js
39+
uses: actions/setup-node@v4
40+
with:
41+
node-version: '20'
42+
43+
- name: Install Binaryen
44+
run: sudo apt-get update && sudo apt-get install -y binaryen
45+
46+
- name: Build WASM SDK
47+
working-directory: ./cdd-ctl/cdd-ctl-wasm-sdk
48+
run: |
49+
npm install --ignore-scripts
50+
npm run build
51+
52+
- name: Fetch and Optimize WASM Binaries
53+
working-directory: ./cdd-ctl
54+
run: |
55+
chmod +x ./scripts/fetch_wasm.sh
56+
./scripts/fetch_wasm.sh
57+
58+
mkdir -p ./optimized-wasm
59+
for wasm_file in cdd-ctl-wasm-sdk/assets/wasm/*.wasm; do
60+
filename=$(basename "$wasm_file")
61+
echo "Optimizing $filename..."
62+
wasm-opt -O3 "$wasm_file" -o "./optimized-wasm/$filename" || cp "$wasm_file" "./optimized-wasm/$filename"
63+
done
64+
65+
- name: Build cdd-docs-ui
66+
working-directory: ./cdd-docs-ui
67+
run: |
68+
npm install --ignore-scripts
69+
npm run build
70+
71+
- name: Install UI Dependencies
72+
working-directory: ./cdd-web-ui
73+
run: npm ci --ignore-scripts
74+
75+
- name: Copy WASM Binaries to Web UI
76+
run: |
77+
mkdir -p cdd-web-ui/public/assets/wasm
78+
cp cdd-ctl/optimized-wasm/*.wasm cdd-web-ui/public/assets/wasm/ || true
79+
cp cdd-ctl/cdd-ctl-wasm-sdk/assets/wasm-support.json cdd-web-ui/public/assets/wasm-support.json || true
80+
81+
- name: Compute base-href and Build Angular App
82+
working-directory: ./cdd-web-ui
83+
run: |
84+
BASE_PATH=$(echo $DEPLOY_LOCATION | sed -e 's/^[^\/]*//')
85+
if [ -z "$BASE_PATH" ] || [ "$BASE_PATH" == "/" ]; then
86+
BASE_HREF="/"
87+
else
88+
BASE_HREF="$BASE_PATH/"
89+
fi
90+
echo "Building Angular with --base-href=$BASE_HREF"
91+
npx ng build --configuration production --base-href $BASE_HREF
92+
93+
- name: Setup Pages
94+
uses: actions/configure-pages@v4
95+
96+
- name: Upload artifact
97+
uses: actions/upload-pages-artifact@v3
98+
with:
99+
path: './cdd-web-ui/dist/cdd-web-ui/browser'
100+
101+
deploy:
102+
needs: build
103+
runs-on: ubuntu-latest
104+
environment:
105+
name: github-pages
106+
url: ${{ steps.deployment.outputs.page_url }}
107+
steps:
108+
- name: Deploy to GitHub Pages
109+
id: deployment
110+
uses: actions/deploy-pages@v4

0 commit comments

Comments
 (0)