/
githubmirror
/
FFmpeg
Обзор
Документация
Войти
/
githubmirror
/
FFmpeg
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
.forgejo/workflows/test.yml
164 строки
6 KB
Timo Rothenpieler
forgejo/workflows: add cross fate tests for ppc64/mips64/riscv64
12 авг 2026, 21:05
12 авг 2026, 21:05
445cba7
Код
Авторство
О чём код?
name: Test on: push: branches: - master pull_request: concurrency: cancel-in-progress: ${{ forge.event_name == 'pull_request' }} jobs: run_fate: name: Fate (${{ matrix.runner }}, ${{ matrix.shared }}, ${{ matrix.bits }} bit) strategy: fail-fast: false matrix: runner: [linux-aarch64] shared: ['static'] bits: ['64'] include: - runner: linux-amd64 shared: 'static' bits: '32' - runner: linux-amd64 shared: 'shared' bits: '64' runs-on: ${{ matrix.runner }} steps: - name: Checkout uses: actions/checkout@v6 - name: Rebase onto target branch uses: ./.forgejo/actions/rebase-pr - name: Configure run: | ./configure --enable-gpl --enable-nonfree --enable-memory-poisoning --assert-level=2 \ $([ "${{ matrix.bits }}" != "32" ] || echo --arch=x86_32 --extra-cflags=-m32 --extra-cxxflags=-m32 --extra-ldflags=-m32) \ $([ "${{ matrix.shared }}" != "shared" ] || echo --enable-shared --disable-static) \ || CFGRES=$? cat ffbuild/config.log exit ${CFGRES:-0} - name: Build run: make -j$(nproc) - name: Restore Cached Fate-Suite id: cache uses: actions/cache/restore@v5 with: path: fate-suite key: fate-suite restore-keys: | fate-suite- - name: Sync Fate-Suite id: fate run: | make fate-rsync SAMPLES=$PWD/fate-suite echo "hash=$(find fate-suite -type f -printf "%P %s %T@\n" | sort | sha256sum | cut -d' ' -f1)" >> $FORGEJO_OUTPUT - name: Cache Fate-Suite uses: actions/cache/save@v5 if: ${{ format('fate-suite-{0}', steps.fate.outputs.hash) != steps.cache.outputs.cache-matched-key }} with: path: fate-suite key: fate-suite-${{ steps.fate.outputs.hash }} - name: Inject PR Samples id: inject if: ${{ forge.event_name == 'pull_request' }} run: SAMPLES=$PWD/fate-suite .forgejo/inject-pr-samples.py ${{ forge.event.pull_request.number }} - name: Run Fate run: | LD_LIBRARY_PATH="$(printf "%s:" "$PWD"/lib*)$PWD" make fate fate-build SAMPLES="$PWD/fate-suite" -j$(nproc) || FATERES=$? find . -name "*.err" -exec printf '::group::%s\n' {} \; -exec cat {} \; -exec printf '::endgroup::\n' \; exit ${FATERES:-0} - name: Fail if new samples were injected if: ${{ steps.inject.outputs.new_samples == 'true' }} run: | echo "New FATE samples were injected from PR attachments. Please add them to the official fate-suite before merging." exit 1 run_fate_full: name: Fate (${{ matrix.name }}) strategy: fail-fast: false matrix: include: - name: 'Full, Wine, win64' image: 'ghcr.io/btbn/ffmpeg-builds/win64-gpl:latest' target_exec: 'wine' runner: 'linux-amd64' - name: 'Full, Linux, aarch64' image: 'ghcr.io/btbn/ffmpeg-builds/linuxarm64-gpl:latest-arm' target_exec: '' runner: 'linux-aarch64' - name: 'Qemu, Linux, ppc64' image: 'ghcr.io/btbn/ffmpeg-builds/base-linuxppc64:latest-arm' target_exec: 'qemu-ppc64' runner: 'linux-aarch64-big' - name: 'Qemu, Linux, mips64' image: 'ghcr.io/btbn/ffmpeg-builds/base-linuxmips64:latest-arm' target_exec: 'qemu-mips64' runner: 'linux-aarch64-big' - name: 'Qemu, Linux, riscv64' image: 'ghcr.io/btbn/ffmpeg-builds/base-linuxriscv64:latest-arm' target_exec: 'qemu-riscv64' runner: 'linux-aarch64-big' runs-on: ${{ matrix.runner }} container: ${{ matrix.image }} steps: - name: Checkout uses: actions/checkout@v6 with: path: ffmpeg - name: Rebase onto target branch uses: ./ffmpeg/.forgejo/actions/rebase-pr with: path: ffmpeg - name: Configure run: | mkdir build && cd build ../ffmpeg/configure --pkg-config-flags="--static" $FFBUILD_TARGET_FLAGS ${FF_CONFIGURE/--enable-libshaderc/} \ --cc="$CC" --cxx="$CXX" --ar="$AR" --ranlib="$RANLIB" --nm="$NM" \ --extra-cflags="$FF_CFLAGS" --extra-cxxflags="$FF_CXXFLAGS" \ --extra-libs="$FF_LIBS" --extra-ldflags="$FF_LDFLAGS" --extra-ldexeflags="$FF_LDEXEFLAGS" \ --enable-memory-poisoning --assert-level=2 --target-exec="${{ matrix.target_exec }}" \ --enable-hardcoded-tables \ || CFGRES=$? cat ffbuild/config.log exit ${CFGRES:-0} - name: Build run: make -C build -j$(nproc) - name: Restore Cached Fate-Suite id: cache uses: actions/cache/restore@v5 with: path: fate-suite key: fate-suite restore-keys: | fate-suite- - name: Sync Fate-Suite id: fate run: | make -C build fate-rsync SAMPLES=$PWD/fate-suite echo "hash=$(find fate-suite -type f -printf "%P %s %T@\n" | sort | sha256sum | cut -d' ' -f1)" >> $FORGEJO_OUTPUT - name: Cache Fate-Suite uses: actions/cache/save@v5 if: ${{ format('fate-suite-{0}', steps.fate.outputs.hash) != steps.cache.outputs.cache-matched-key }} with: path: fate-suite key: fate-suite-${{ steps.fate.outputs.hash }} - name: Inject PR Samples id: inject if: ${{ forge.event_name == 'pull_request' }} run: SAMPLES=$PWD/fate-suite ffmpeg/.forgejo/inject-pr-samples.py ${{ forge.event.pull_request.number }} - name: Run Fate run: | if [[ "${{ matrix.target_exec }}" == "wine" ]]; then export WINEDEBUG=-all export FREI0R_PATH="$(winepath -w "$FREI0R_PATH")" fi LD_LIBRARY_PATH="$(printf "%s:" "$PWD"/lib*)$PWD" make -C build fate fate-build SAMPLES="$PWD/fate-suite" -j$(nproc) || FATERES=$? find . -name "*.err" -exec printf '::group::%s\n' {} \; -exec cat {} \; -exec printf '::endgroup::\n' \; exit ${FATERES:-0} - name: Fail if new samples were injected if: ${{ steps.inject.outputs.new_samples == 'true' }} run: | echo "New FATE samples were injected from PR attachments. Please add them to the official fate-suite before merging." exit 1