Fix #24702: Voice too long corruption #1114
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: 'Check: Visual Tests (vtest)' | |
on: | |
pull_request: | |
branches: | |
- master | |
jobs: | |
setup: | |
name: "Setup VTests workflow" | |
runs-on: ubuntu-20.04 | |
outputs: | |
do_run: ${{ steps.output_data.outputs.do_run }} | |
reference_sha: ${{ steps.output_data.outputs.reference_sha }} | |
artifact_name: ${{ steps.output_data.outputs.artifact_name }} | |
steps: | |
- name: Cancel Previous Runs | |
uses: styfle/[email protected] | |
with: | |
access_token: ${{ github.token }} | |
- name: Clone repository | |
uses: actions/checkout@v4 | |
- name: "Configure workflow" | |
run: | | |
sudo bash ./buildscripts/ci/tools/make_build_number.sh | |
BUILD_NUMBER=$(cat ./build.artifacts/env/build_number.env) | |
echo "BUILD_NUMBER=$BUILD_NUMBER" >> $GITHUB_ENV | |
echo "BUILD_NUMBER: $BUILD_NUMBER" | |
- name: Get reference commit for PR | |
if: github.event_name == 'pull_request' | |
env: | |
pull_request_title: ${{ github.event.pull_request.title }} | |
run: | | |
REFERENCE_SHA=${{ github.event.pull_request.base.sha }} | |
if [ -z "$REFERENCE_SHA" ]; then DO_RUN='false'; else DO_RUN='true'; fi | |
echo "REFERENCE_SHA=$REFERENCE_SHA" >> $GITHUB_ENV | |
echo "DO_RUN=$DO_RUN" >> $GITHUB_ENV | |
echo "PR_INFO= ${{ github.event.pull_request.number }} ${pull_request_title}" >> $GITHUB_ENV | |
- name: Get reference commit for push commit | |
if: github.event_name == 'push' | |
run: | | |
REFERENCE_SHA=$( git show -s --pretty=%P ${{ github.sha }} | head -c 10 ) | |
if [ -z "$REFERENCE_SHA" ]; then DO_RUN='false'; else DO_RUN='true'; fi | |
echo "REFERENCE_SHA=$REFERENCE_SHA" >> $GITHUB_ENV | |
echo "DO_RUN=$DO_RUN" >> $GITHUB_ENV | |
echo "PR_INFO=" >> $GITHUB_ENV | |
- id: output_data | |
name: Output workflow data | |
env: | |
pr_info: ${{ env.PR_INFO }} | |
run: | | |
echo "do_run=${{ env.DO_RUN }}" >> $GITHUB_OUTPUT | |
echo "DO_RUN=${{ env.DO_RUN }}" | |
echo "reference_sha=${{ env.REFERENCE_SHA }}" >> $GITHUB_OUTPUT | |
echo "REFERENCE_SHA=${{ env.REFERENCE_SHA }}" | |
UPLOAD_ARTIFACT_NAME="$(tr '":<>|*?/\\’' '_' <<<"VTests Comparison ${{ env.BUILD_NUMBER }}${pr_info}")" | |
echo "artifact_name=$UPLOAD_ARTIFACT_NAME" >> $GITHUB_OUTPUT | |
echo "UPLOAD_ARTIFACT_NAME=$UPLOAD_ARTIFACT_NAME" | |
build_current: | |
name: "Build current" | |
runs-on: ubuntu-20.04 | |
needs: setup | |
if: needs.setup.outputs.do_run == 'true' # Can't use env: see https://github.com/actions/runner/issues/480 | |
steps: | |
- name: Clone repository | |
uses: actions/checkout@v4 | |
- name: Ccache cache files | |
uses: actions/cache@v4 | |
with: | |
path: ~/.ccache | |
key: ${{github.workflow}}-ccache-$(date -u +"%F-%T") | |
restore-keys: ${{github.workflow}}-ccache- # restore ccache from either previous build on this branch or on master | |
- name: Setup ccache | |
run: | | |
bash ./buildscripts/ci/tools/setup_ccache.sh | |
- name: Setup environment | |
run: | | |
bash ./buildscripts/ci/linux/setup.sh | |
- name: Build and Pack | |
run: | | |
bash ./buildscripts/ci/vtests/build_and_pack.sh | |
- name: Upload | |
uses: actions/upload-artifact@v4 | |
with: | |
name: current_build | |
path: ./build.artifacts/ | |
build_reference: | |
name: "Build reference" | |
runs-on: ubuntu-20.04 | |
needs: setup | |
if: needs.setup.outputs.do_run == 'true' | |
steps: | |
- name: Clone repository and checkout reference commit | |
uses: actions/checkout@v4 | |
with: | |
ref: ${{ needs.setup.outputs.reference_sha }} | |
- name: Ccache cache files | |
uses: actions/cache@v4 | |
with: | |
path: ~/.ccache | |
key: ${{github.workflow}}-ccache-$(date -u +"%F-%T") | |
restore-keys: ${{github.workflow}}-ccache- # restore ccache from either previous build on this branch or on master | |
- name: Setup ccache | |
run: | | |
bash ./buildscripts/ci/tools/setup_ccache.sh | |
- name: Setup environment | |
run: | | |
bash ./buildscripts/ci/linux/setup.sh | |
- name: Build and Pack | |
run: | | |
bash ./buildscripts/ci/vtests/build_and_pack.sh | |
- name: Upload | |
uses: actions/upload-artifact@v4 | |
with: | |
name: reference_build | |
path: ./build.artifacts/ | |
generate_and_compare: | |
name: "Generate and Compare" | |
runs-on: ubuntu-20.04 | |
needs: [setup, build_current, build_reference] | |
if: needs.setup.outputs.do_run == 'true' | |
steps: | |
- name: Clone repository | |
uses: actions/checkout@v4 | |
- name: Download current | |
uses: actions/download-artifact@v4 | |
with: | |
name: current_build | |
path: ./musescore_current | |
- name: Download reference | |
uses: actions/download-artifact@v4 | |
with: | |
name: reference_build | |
path: ./musescore_reference | |
- name: Generate PNGs | |
run: | | |
xvfb-run ./buildscripts/ci/vtests/generate_pngs.sh | |
env: | |
ASAN_OPTIONS: "detect_leaks=0" | |
- name: Compare PNGs | |
run: | | |
echo "VTEST_DIFF_FOUND=false" >> $GITHUB_ENV | |
./vtest/vtest-compare-pngs.sh --ci 1 | |
- name: Upload comparison | |
if: env.VTEST_DIFF_FOUND == 'true' | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ${{ needs.setup.outputs.artifact_name }} | |
path: ./comparison | |
#- name: Generate ref drawdata | |
# run: | | |
# chmod +x ./musescore_reference/app/bin/mscore4portable | |
# xvfb-run ./vtest/gen-ref-data.sh -m ./musescore_reference/app/bin/mscore4portable | |
#- name: DrawData VTest | |
# run: | | |
# chmod +x ./musescore_current/app/bin/mscore4portable | |
# xvfb-run ./vtest/vtest.sh -m ./musescore_current/app/bin/mscore4portable | |
# - name: Skip failure signal if PR is labeled 'vtests' | |
# if: github.event_name == 'pull_request' && contains( env.VTEST_DIFF_FOUND, 'true') && contains(github.event.pull_request.labels.*.name, 'vtests') | |
# run: | | |
# echo "This PR appears to change some of the visual tests." | |
# echo "Please carefully review the new visual test results in the uploaded artifact that can be found here: https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}" | |
# echo "Failure signal skipped because 'vtests' label is applied to the PR" | |
# export VTEST_DIFF_FOUND=false | |
# echo "VTEST_DIFF_FOUND=$VTEST_DIFF_FOUND" >> $GITHUB_ENV | |
- name: Emit failure signal for PR if differences are found | |
if: github.event_name == 'pull_request' && contains( env.VTEST_DIFF_FOUND, 'true') | |
run: | | |
echo "This PR appears to change some of the visual tests." | |
echo "Please carefully review the new visual test results in the uploaded artifact that can be found here: https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}" | |
exit 1 | |
- name: Comment push commit | |
if: github.event_name == 'push' && contains( env.VTEST_DIFF_FOUND, 'true') | |
uses: peter-evans/[email protected] | |
with: | |
body: | | |
This is an automatic message. This commit appears to change some of the visual tests. | |
Please carefully review the new visual test results in the uploaded artifact that can be found | |
[here][1] | |
[1]: https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }} | |
token: ${{ secrets.GITHUB_TOKEN }} |