mirror of
https://github.com/bevyengine/bevy
synced 2024-11-22 12:43:34 +00:00
Fix screenshot comparison (#15894)
# Objective - After merging #13248 the new upload job fails ## Solution - Fix the file path - Instead of a pull_request_target workflow, keep the examples in the pull_request workflow and add another job that will run once its all completed on a `workflow_run` event to upload screenshots ## Testing - Tested in a ubuntu docker container, running the exact same script - Manual result: https://pixel-eagle.com/project/B04F67C0-C054-4A6F-92EC-F599FEC2FD1D/run/5/compare/2 - The CI on this job will still fail as its using the job from main
This commit is contained in:
parent
d7b2713462
commit
bd912c25f7
4 changed files with 95 additions and 79 deletions
48
.github/workflows/ci-comment-failures.yml
vendored
48
.github/workflows/ci-comment-failures.yml
vendored
|
@ -178,3 +178,51 @@ jobs:
|
||||||
issue_number: issue_number,
|
issue_number: issue_number,
|
||||||
body: 'Your PR increases Bevy Minimum Supported Rust Version. Please update the `rust-version` field in the root Cargo.toml file.'
|
body: 'Your PR increases Bevy Minimum Supported Rust Version. Please update the `rust-version` field in the root Cargo.toml file.'
|
||||||
});
|
});
|
||||||
|
|
||||||
|
make-macos-screenshots-available:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
timeout-minutes: 30
|
||||||
|
steps:
|
||||||
|
- name: 'Download artifact'
|
||||||
|
id: find-artifact
|
||||||
|
uses: actions/github-script@v7
|
||||||
|
with:
|
||||||
|
result-encoding: string
|
||||||
|
script: |
|
||||||
|
var artifacts = await github.rest.actions.listWorkflowRunArtifacts({
|
||||||
|
owner: context.repo.owner,
|
||||||
|
repo: context.repo.repo,
|
||||||
|
run_id: ${{github.event.workflow_run.id }},
|
||||||
|
});
|
||||||
|
var matchArtifacts = artifacts.data.artifacts.filter((artifact) => {
|
||||||
|
return artifact.name == "screenshots-macos"
|
||||||
|
});
|
||||||
|
if (matchArtifacts.length == 0) { return "false" }
|
||||||
|
var matchArtifact = matchArtifacts[0];
|
||||||
|
var download = await github.rest.actions.downloadArtifact({
|
||||||
|
owner: context.repo.owner,
|
||||||
|
repo: context.repo.repo,
|
||||||
|
artifact_id: matchArtifact.id,
|
||||||
|
archive_format: 'zip',
|
||||||
|
});
|
||||||
|
var fs = require('fs');
|
||||||
|
fs.writeFileSync('${{github.workspace}}/screenshots-macos.zip', Buffer.from(download.data));
|
||||||
|
return "true"
|
||||||
|
- run: unzip screenshots-macos.zip
|
||||||
|
- name: save screenshots
|
||||||
|
uses: actions/upload-artifact@v4
|
||||||
|
with:
|
||||||
|
name: screenshots-macos
|
||||||
|
path: screenshots-macos
|
||||||
|
|
||||||
|
|
||||||
|
compare-macos-screenshots:
|
||||||
|
name: Compare macOS screenshots
|
||||||
|
needs: [make-macos-screenshots-available]
|
||||||
|
uses: ./.github/workflows/send-screenshots-to-pixeleagle.yml
|
||||||
|
with:
|
||||||
|
commit: ${{ github.event.workflow_run.event.sha }}
|
||||||
|
branch: ${{ github.event.workflow_run.event.ref_name }}
|
||||||
|
artifact: screenshots-macos
|
||||||
|
os: macos
|
||||||
|
secrets: inherit
|
||||||
|
|
77
.github/workflows/ci-examples.yml
vendored
77
.github/workflows/ci-examples.yml
vendored
|
@ -1,77 +0,0 @@
|
||||||
name: CI - examples
|
|
||||||
|
|
||||||
on:
|
|
||||||
merge_group:
|
|
||||||
pull_request_target:
|
|
||||||
push:
|
|
||||||
branches:
|
|
||||||
- main
|
|
||||||
- release-*
|
|
||||||
|
|
||||||
# Unlike jobs in ci.yml, jobs in this workflow can access secrets. Their definitions are taken from the base branch of a PR, not from the PR itself.
|
|
||||||
|
|
||||||
env:
|
|
||||||
CARGO_TERM_COLOR: always
|
|
||||||
# If nightly is breaking CI, modify this variable to target a specific nightly version.
|
|
||||||
NIGHTLY_TOOLCHAIN: nightly
|
|
||||||
|
|
||||||
concurrency:
|
|
||||||
group: ${{github.workflow}}-${{github.ref}}-examples
|
|
||||||
cancel-in-progress: ${{github.event_name == 'pull_request_target'}}
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
run-examples-macos-metal:
|
|
||||||
# Explicity use macOS 14 to take advantage of M1 chip.
|
|
||||||
runs-on: macos-14
|
|
||||||
timeout-minutes: 30
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v4
|
|
||||||
- uses: dtolnay/rust-toolchain@stable
|
|
||||||
- name: Disable audio
|
|
||||||
# Disable audio through a patch. on github m1 runners, audio timeouts after 15 minutes
|
|
||||||
run: git apply --ignore-whitespace tools/example-showcase/disable-audio.patch
|
|
||||||
- name: Build bevy
|
|
||||||
# this uses the same command as when running the example to ensure build is reused
|
|
||||||
run: |
|
|
||||||
TRACE_CHROME=trace-alien_cake_addict.json CI_TESTING_CONFIG=.github/example-run/alien_cake_addict.ron cargo build --example alien_cake_addict --features "bevy_ci_testing,trace,trace_chrome"
|
|
||||||
- name: Run examples
|
|
||||||
run: |
|
|
||||||
for example in .github/example-run/*.ron; do
|
|
||||||
example_name=`basename $example .ron`
|
|
||||||
echo -n $example_name > last_example_run
|
|
||||||
echo "running $example_name - "`date`
|
|
||||||
time TRACE_CHROME=trace-$example_name.json CI_TESTING_CONFIG=$example cargo run --example $example_name --features "bevy_ci_testing,trace,trace_chrome"
|
|
||||||
sleep 10
|
|
||||||
if [ `find ./ -maxdepth 1 -name 'screenshot-*.png' -print -quit` ]; then
|
|
||||||
mkdir screenshots-$example_name
|
|
||||||
mv screenshot-*.png screenshots-$example_name/
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
mkdir traces && mv trace*.json traces/
|
|
||||||
mkdir screenshots && mv screenshots-* screenshots/
|
|
||||||
- name: save traces
|
|
||||||
uses: actions/upload-artifact@v4
|
|
||||||
with:
|
|
||||||
name: example-traces-macos
|
|
||||||
path: traces
|
|
||||||
- name: save screenshots
|
|
||||||
uses: actions/upload-artifact@v4
|
|
||||||
with:
|
|
||||||
name: screenshots-macos
|
|
||||||
path: screenshots
|
|
||||||
- uses: actions/upload-artifact@v4
|
|
||||||
if: ${{ failure() && github.event_name == 'pull_request' }}
|
|
||||||
with:
|
|
||||||
name: example-run-macos
|
|
||||||
path: example-run/
|
|
||||||
|
|
||||||
compare-macos-screenshots:
|
|
||||||
name: Compare macOS screenshots
|
|
||||||
needs: [run-examples-macos-metal]
|
|
||||||
uses: ./.github/workflows/send-screenshots-to-pixeleagle.yml
|
|
||||||
with:
|
|
||||||
commit: ${{ github.sha }}
|
|
||||||
branch: ${{ github.ref_name }}
|
|
||||||
artifact: screenshots-macos
|
|
||||||
os: macos
|
|
||||||
secrets: inherit
|
|
45
.github/workflows/ci.yml
vendored
45
.github/workflows/ci.yml
vendored
|
@ -253,6 +253,51 @@ jobs:
|
||||||
echo 'if you use VSCode, you can also install `Typos Spell Checker'
|
echo 'if you use VSCode, you can also install `Typos Spell Checker'
|
||||||
echo 'You can find the extension here: https://marketplace.visualstudio.com/items?itemName=tekumara.typos-vscode'
|
echo 'You can find the extension here: https://marketplace.visualstudio.com/items?itemName=tekumara.typos-vscode'
|
||||||
|
|
||||||
|
run-examples-macos-metal:
|
||||||
|
# Explicity use macOS 14 to take advantage of M1 chip.
|
||||||
|
runs-on: macos-14
|
||||||
|
timeout-minutes: 30
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- uses: dtolnay/rust-toolchain@stable
|
||||||
|
- name: Disable audio
|
||||||
|
# Disable audio through a patch. on github m1 runners, audio timeouts after 15 minutes
|
||||||
|
run: git apply --ignore-whitespace tools/example-showcase/disable-audio.patch
|
||||||
|
- name: Build bevy
|
||||||
|
# this uses the same command as when running the example to ensure build is reused
|
||||||
|
run: |
|
||||||
|
TRACE_CHROME=trace-alien_cake_addict.json CI_TESTING_CONFIG=.github/example-run/alien_cake_addict.ron cargo build --example alien_cake_addict --features "bevy_ci_testing,trace,trace_chrome"
|
||||||
|
- name: Run examples
|
||||||
|
run: |
|
||||||
|
for example in .github/example-run/*.ron; do
|
||||||
|
example_name=`basename $example .ron`
|
||||||
|
echo -n $example_name > last_example_run
|
||||||
|
echo "running $example_name - "`date`
|
||||||
|
time TRACE_CHROME=trace-$example_name.json CI_TESTING_CONFIG=$example cargo run --example $example_name --features "bevy_ci_testing,trace,trace_chrome"
|
||||||
|
sleep 10
|
||||||
|
if [ `find ./ -maxdepth 1 -name 'screenshot-*.png' -print -quit` ]; then
|
||||||
|
mkdir screenshots-$example_name
|
||||||
|
mv screenshot-*.png screenshots-$example_name/
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
mkdir traces && mv trace*.json traces/
|
||||||
|
mkdir screenshots && mv screenshots-* screenshots/
|
||||||
|
- name: save traces
|
||||||
|
uses: actions/upload-artifact@v4
|
||||||
|
with:
|
||||||
|
name: example-traces-macos
|
||||||
|
path: traces
|
||||||
|
- name: save screenshots
|
||||||
|
uses: actions/upload-artifact@v4
|
||||||
|
with:
|
||||||
|
name: screenshots-macos
|
||||||
|
path: screenshots
|
||||||
|
- uses: actions/upload-artifact@v4
|
||||||
|
if: ${{ failure() && github.event_name == 'pull_request' }}
|
||||||
|
with:
|
||||||
|
name: example-run-macos
|
||||||
|
path: example-run/
|
||||||
|
|
||||||
check-doc:
|
check-doc:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
timeout-minutes: 30
|
timeout-minutes: 30
|
||||||
|
|
|
@ -60,7 +60,7 @@ jobs:
|
||||||
while IFS=$'\t' read -r name; do
|
while IFS=$'\t' read -r name; do
|
||||||
name=`echo $name | tr -d '"'`
|
name=`echo $name | tr -d '"'`
|
||||||
echo "Uploading $name"
|
echo "Uploading $name"
|
||||||
curl https://pixel-eagle.vleue.com/$project/runs/$run/screenshots -F "data=@./$name" -F "screenshot=$name" --oauth2-bearer ${{ secrets.PIXELEAGLE_TOKEN }}
|
curl https://pixel-eagle.vleue.com/$project/runs/$run/screenshots -F "data=@./screenshots-$name" -F "screenshot=$name" --oauth2-bearer ${{ secrets.PIXELEAGLE_TOKEN }}
|
||||||
echo
|
echo
|
||||||
done
|
done
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue