53 lines
1.7 KiB
YAML
53 lines
1.7 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@v2
|
|
- run: rustup toolchain install stable --profile minimal --target wasm32-unknown-unknown
|
|
- uses: Swatinem/rust-cache@v2
|
|
with:
|
|
prefix-key: "pr-preview-"
|
|
|
|
- name: "Install wasmopt / binaryen"
|
|
run: |
|
|
sudo apt-get update && sudo apt-get install binaryen
|
|
|
|
- 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 }}
|
|
PR_BRANCH: ${{ github.head_ref }}
|
|
run: |
|
|
echo "{\"pr_number\": \"$PR_NUMBER\", \"pr_branch\": \"$PR_BRANCH\"}" > meta.json
|
|
|
|
- uses: actions/upload-artifact@v4
|
|
with:
|
|
name: meta.json
|
|
path: meta.json
|