@@ -0,0 +1,43 @@
|
||||
# =============================================================================
|
||||
# build.yml —— 學生 push 後,Gitea Actions 自動把 main.cpp 編成 WASM 網頁
|
||||
# 並發佈到公開的 builds 區。學生通常不必改這個檔。
|
||||
# =============================================================================
|
||||
name: build-wasm
|
||||
on: [push]
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: gridpp # 對應 runner 的 label(act_runner-config.yaml)
|
||||
container:
|
||||
image: gridpp-builder:latest # 內含 emcc + raylib-web + Grid++ 引擎
|
||||
# 安全:限制記憶體/CPU/行程數,搭配 timeout 防無窮迴圈或挖礦。
|
||||
# 外連已由 runner 把 job 容器掛在 internal 網擋掉(連得到 gitea、連不到外網)。
|
||||
# 掛 gridpp_builds 是為了最後一步把產物寫進 builds 區。
|
||||
options: --memory=512m --cpus=1 --pids-limit=256 -v gridpp_builds:/srv/builds
|
||||
timeout-minutes: 2 # 防無窮迴圈/挖礦
|
||||
|
||||
steps:
|
||||
- name: 取得程式碼
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: 產生素材 assets.db
|
||||
run: python3 "$GRIDPP/create_assets.py"
|
||||
|
||||
- name: 編成 WASM 網頁
|
||||
run: |
|
||||
mkdir -p site
|
||||
emcc main.cpp -std=c++17 \
|
||||
-I"$GRIDPP/include" -I"$RAYLIB_WEB/include" -L"$RAYLIB_WEB/lib" -lraylib \
|
||||
-s USE_GLFW=3 -s ASYNCIFY -s ALLOW_MEMORY_GROWTH=1 \
|
||||
--preload-file [email protected] \
|
||||
--preload-file [email protected] \
|
||||
--shell-file "$GRIDPP/shell.html" \
|
||||
-o site/index.html
|
||||
|
||||
- name: 發佈到 builds 區
|
||||
run: |
|
||||
SHORT=$(echo "$GITHUB_SHA" | cut -c1-8) # commit 前 8 碼
|
||||
DEST="/srv/builds/${GITHUB_ACTOR}/${SHORT}"
|
||||
mkdir -p "$DEST"
|
||||
cp site/index.html site/index.js site/index.wasm site/index.data "$DEST/"
|
||||
echo "✅ 公開連結:http://<本機IP>:8080/${GITHUB_ACTOR}/${SHORT}/"
|
||||
Reference in New Issue
Block a user