Skip to content

Commit

Permalink
Update demo_app_windows.rs
Browse files Browse the repository at this point in the history
  • Loading branch information
lucasmerlin committed Sep 18, 2024
1 parent f4ed394 commit 974b4ca
Show file tree
Hide file tree
Showing 3 changed files with 139 additions and 0 deletions.
47 changes: 47 additions & 0 deletions .github/workflows/preview_build.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
# This action builds and deploys egui_demo_app on each pull request created
# Security notes:
# This action 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 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
- 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
25 changes: 25 additions & 0 deletions .github/workflows/preview_cleanup.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
name: Preview Cleanup

on:
pull_request_target:
types:
- closed

jobs:
cleanup:
runs-on: ubuntu-latest
steps:
- run: mkdir -p empty_dir
- name: Url slug variable
run: |
echo "URL_SLUG=${{ github.event.pull_request.number }}-${{ github.event.pull_request.head.ref }}" >> $GITHUB_ENV
- name: Deploy
uses: JamesIves/github-pages-deploy-action@v4
with:
folder: empty_dir
repository-name: egui-pr-preview/pr
branch: 'main'
clean: true
target-folder: ${{ env.URL_SLUG }}
ssh-key: ${{ secrets.DEPLOY_KEY }}
commit-message: "Remove preview for PR ${{ env.URL_SLUG }}"
67 changes: 67 additions & 0 deletions .github/workflows/preview_deploy.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
name: Preview Deploy

on:
workflow_run:
workflows:
- "Preview Build"
types:
- completed


permissions:
pull-requests: write

jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Download Artifact
# For some reason we can't use the actions/download-artifact across workflows
# https://github.com/actions/download-artifact/issues/60
# https://securitylab.github.com/resources/github-actions-preventing-pwn-requests/
uses: actions/[email protected]
with:
script: |
var fs = require('fs');
var artifacts = await github.actions.listWorkflowRunArtifacts({
owner: context.repo.owner,
repo: context.repo.repo,
run_id: ${{github.event.workflow_run.id }},
});
for (const artifact of artifacts.data.artifacts) {
var download = await github.actions.downloadArtifact({
owner: context.repo.owner,
repo: context.repo.repo,
artifact_id: artifact.id,
archive_format: 'zip',
});
fs.writeFileSync(`./${artifact.name}.zip`, Buffer.from(download.data));
}
- run: unzip web_demo.zip && unzip meta.json.zip

- name: Parse meta.json
run: |
echo "PR_NUMBER=$(jq -r .pr_number meta.json)" >> $GITHUB_ENV
echo "PR_BRANCH=$(jq -r .pr_branch meta.json)" >> $GITHUB_ENV
- name: Url slug variable
run: |
echo "URL_SLUG=${{ env.PR_NUMBER }}-${{ env.PR_BRANCH }}" >> $GITHUB_ENV
- name: Deploy
uses: JamesIves/github-pages-deploy-action@v4
with:
folder: web_demo
repository-name: egui-pr-preview/pr
branch: 'main'
clean: true
target-folder: ${{ env.URL_SLUG }}
ssh-key: ${{ secrets.DEPLOY_KEY }}
commit-message: "Update preview for PR ${{ env.URL_SLUG }}"
force: false

- name: Comment PR
uses: thollander/actions-comment-pull-request@v2
with:
message: |
Preview available at https://egui-pr-preview.github.io/pr/${{ env.URL_SLUG }}

0 comments on commit 974b4ca

Please sign in to comment.