61 lines
1.9 KiB
YAML
61 lines
1.9 KiB
YAML
# This action builds and deploys egui_demo_app on each pull request created
|
|
# Security notes:
|
|
# The preview deployment is split in two workflows, preview_build and preview_deploy.
|
|
# `preview_build` runs on pull_request, so it won't have any access to the repositories secrets, so it is safe to
|
|
# build / execute untrusted code.
|
|
# `preview_deploy` has access to the repositories secrets (so it can push to the pr preview repo) but won't run
|
|
# any untrusted code (it will just extract the build artifact and push it to the pages branch where it will
|
|
# automatically be deployed).
|
|
|
|
name: Preview Build
|
|
|
|
on:
|
|
- pull_request
|
|
|
|
jobs:
|
|
build:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- uses: dtolnay/rust-toolchain@master
|
|
with:
|
|
toolchain: 1.86.0
|
|
targets: wasm32-unknown-unknown
|
|
- uses: Swatinem/rust-cache@v2
|
|
with:
|
|
prefix-key: "pr-preview-"
|
|
|
|
- name: Install wasm-opt
|
|
uses: sigoden/install-binary@v1
|
|
with:
|
|
repo: WebAssembly/binaryen
|
|
tag: version_123
|
|
name: wasm-opt
|
|
|
|
- run: |
|
|
scripts/build_demo_web.sh --release
|
|
|
|
- name: Remove gitignore file
|
|
# We need to remove the .gitignore, otherwise the deploy via git will not include the js and wasm files
|
|
run: |
|
|
rm -rf web_demo/.gitignore
|
|
|
|
- uses: actions/upload-artifact@v4
|
|
with:
|
|
name: web_demo
|
|
path: web_demo
|
|
|
|
- name: Generate meta.json
|
|
env:
|
|
PR_NUMBER: ${{ github.event.number }}
|
|
URL_SLUG: ${{ github.event.number }}-${{ github.head_ref }}
|
|
run: |
|
|
# Sanitize the URL_SLUG to only contain alphanumeric characters and dashes
|
|
URL_SLUG=$(echo $URL_SLUG | tr -cd '[:alnum:]-')
|
|
echo "{\"pr_number\": \"$PR_NUMBER\", \"url_slug\": \"$URL_SLUG\"}" > meta.json
|
|
|
|
- uses: actions/upload-artifact@v4
|
|
with:
|
|
name: meta.json
|
|
path: meta.json
|