Update document #9
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
# Workflow that builds libabvif with aom and libyuv, also builds MP4box, | |
# and runs tests with "golden" in their name. Test results are saved as artifacts | |
# which can be downloaded from GitHub'S UI or with 'gh run download'. | |
name: CI Linux Golden Tests | |
on: [push, pull_request] | |
permissions: | |
contents: read | |
# Cancel the workflow if a new one is triggered from the same PR, branch, or tag, except on main. | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: ${{ github.ref != 'refs/heads/main' }} | |
jobs: | |
build-shared-run-golden-tests: | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu-latest] | |
steps: | |
- uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 | |
- name: Set GCC & G++ 10 compiler (on Linux) | |
run: echo "CC=gcc-10" >> $GITHUB_ENV && echo "CXX=g++-10" >> $GITHUB_ENV | |
- uses: actions/setup-python@v4 | |
with: | |
python-version: '3.x' | |
- name: Cache external dependencies | |
id: cache-ext | |
uses: actions/cache@v3 | |
with: | |
path: ext | |
key: ${{ runner.os }}-golden-tests-${{ hashFiles('ext/aom.cmd', 'ext/libyuv.cmd', 'ext/libxml2.cmd', 'ext/mp4box.sh') }} | |
- name: Setup cmake | |
uses: jwlawson/actions-setup-cmake@187efd9581ed20ee4e03c0dfb9ac2cd5896c4835 | |
with: | |
# CMake 3.18 or higher is required for libxml2 | |
cmake-version: '3.18.x' | |
- name: Print cmake version | |
run: cmake --version | |
- uses: ilammy/setup-nasm@v1 | |
with: | |
version: 2.15.05 | |
- uses: seanmiddleditch/gha-setup-ninja@v3 | |
- name: Build aom | |
if: steps.cache-ext.outputs.cache-hit != 'true' | |
working-directory: ./ext | |
run: bash -e aom.cmd | |
- name: Build libyuv | |
if: steps.cache-ext.outputs.cache-hit != 'true' | |
working-directory: ./ext | |
run: bash -e libyuv.cmd | |
- name: Build libxml2 | |
if: steps.cache-ext.outputs.cache-hit != 'true' | |
working-directory: ./ext | |
run: bash -e libxml2.cmd | |
- name: Build mp4box | |
if: steps.cache-ext.outputs.cache-hit != 'true' | |
working-directory: ./ext | |
run: bash -e mp4box.sh | |
- name: Prepare libavif (cmake) | |
run: > | |
mkdir build && cd build | |
cmake .. -G Ninja | |
-DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=OFF | |
-DAVIF_CODEC_AOM=ON -DAVIF_LOCAL_AOM=ON | |
-DAVIF_LOCAL_LIBYUV=ON | |
-DAVIF_BUILD_EXAMPLES=ON -DAVIF_BUILD_APPS=ON | |
-DAVIF_ENABLE_EXPERIMENTAL_GAIN_MAP=ON | |
-DAVIF_LOCAL_LIBXML2=ON | |
-DAVIF_BUILD_TESTS=ON -DAVIF_ENABLE_GOLDEN_TESTS=ON | |
-DAVIF_ENABLE_GTEST=OFF | |
-DGOLDEN_TESTS_OUTPUT_DIR=${{ runner.temp }}/golden_tests | |
- name: Build libavif (ninja) | |
working-directory: ./build | |
run: ninja | |
- name: Run AVIF golden tests | |
working-directory: ./build | |
# Runs test that have "golden" in their name. | |
run: ctest -j $(getconf _NPROCESSORS_ONLN) --output-on-failure -R golden | |
# See https://docs.github.com/en/actions/using-workflows/storing-workflow-data-as-artifacts | |
- name: Archive golden tests output for debugging | |
if: failure() | |
uses: actions/upload-artifact@v3 | |
with: | |
name: golden-tests-output | |
path: ${{ runner.temp }}/golden_tests/**/* | |
# Print instructions to help fix the tests. | |
- name: How to fix failing tests | |
if: failure() | |
run: > | |
echo "If the tests fail, download the test results from the Artifacts list at https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }} or with: | |
gh run download --dir /tmp/golden-tests-output --repo ${{ github.repository }} --name golden-tests-output ${{ github.run_id }} | |
Then look at the instructions in the unzipped file or in /tmp/golden-tests-output if you used the command line." |