From 0e4e555234ca0137f755907911003b1e9efb8303 Mon Sep 17 00:00:00 2001 From: PatTheMav Date: Wed, 24 May 2023 20:35:08 +0200 Subject: [PATCH] CI: Update FFmpeg build workflow and action for native Windows builds --- .github/actions/build-ffmpeg/action.yml | 147 +++++++++++----- .github/actions/build-qt/action.yaml | 1 + .github/workflows/main.yaml | 220 +++++++++++------------- .github/workflows/scheduled.yaml | 82 +++++++++ 4 files changed, 289 insertions(+), 161 deletions(-) diff --git a/.github/actions/build-ffmpeg/action.yml b/.github/actions/build-ffmpeg/action.yml index 58f64af9a..902878c4d 100644 --- a/.github/actions/build-ffmpeg/action.yml +++ b/.github/actions/build-ffmpeg/action.yml @@ -1,78 +1,141 @@ -name: 'Build FFmpeg' -description: 'Builds FFmpeg for obs-deps with specified architecture, type, and build config' +name: Build FFmpeg +description: Builds FFmpeg for obs-deps with specified architecture, type, and build config inputs: target: - description: 'Build target for FFmpeg' + description: Build target for FFmpeg required: true type: - description: 'Build type (shared or static libraries)' + description: Build type (shared or static libraries) required: false - default: 'static' + default: static config: - description: 'Build configuration' + description: Build configuration required: false - default: 'Release' - cacheRevision: - description: 'Cache revision number to force creation of new cache generation' + default: Release + workingDirectory: + description: Working directory for repository action required: false - default: '01' + default: ${{ github.workspace }} runs: - using: 'composite' + using: composite steps: - name: Environment Setup - id: ffmpeg-env-setup + id: env-setup shell: bash + working-directory: ${{ inputs.workingDirectory }} run: | - case "${{ runner.os }}" in - Linux) - if ! type zsh > /dev/null 2>&1; then - sudo apt update - sudo apt install zsh - fi - ;; + case "${RUNNER_OS}" in macOS) if ! type sha256sum > /dev/null 2>&1; then brew install coreutils fi + ffmpeg_dep_hash=$(cat ${PWD}/deps.ffmpeg/*.zsh | sha256sum | cut -d " " -f 1) + ;; + Windows) + ffmpeg_dep_hash=$(cat ${PWD}/deps.ffmpeg/*.ps1 | sha256sum | cut -d " " -f 1) + ;; esac - ffmpeg_dep_hash=$(cat ${{ github.workspace }}/deps.ffmpeg/*.zsh | sha256sum | cut -d " " -f 1) - echo "hash=${ffmpeg_dep_hash}" >> $GITHUB_OUTPUT + echo "hash=${ffmpeg_dep_hash:0:9}" >> $GITHUB_OUTPUT - name: Restore FFmpeg Dependencies from Cache id: ffmpeg-deps-cache - uses: actions/cache@v3 + uses: actions/cache/restore@v3 with: path: | - ${{ github.workspace }}/*_build_temp/* - !${{ github.workspace }}/*_build_temp/**/.git - !${{ github.workspace }}/*_build_temp/*.tar.gz - !${{ github.workspace }}/*_build_temp/*.tar.xz - !${{ github.workspace }}/*_build_temp/*.zip - !${{ github.workspace }}/*_build_temp/FFmpeg* - !${{ github.workspace }}/*_build_temp/x264-*-shared/ - key: ${{ inputs.target }}-ffmpeg-deps-${{ inputs.type }}-${{ steps.ffmpeg-env-setup.outputs.hash }}-${{ inputs.cacheRevision }} + ${{ inputs.workingDirectory }}/*_build_temp/* + !${{ inputs.workingDirectory }}/*_build_temp/**/.git + !${{ inputs.workingDirectory }}/*_build_temp/*.tar.gz + !${{ inputs.workingDirectory }}/*_build_temp/*.tar.xz + !${{ inputs.workingDirectory }}/*_build_temp/*.zip + !${{ inputs.workingDirectory }}/*_build_temp/FFmpeg* + !${{ inputs.workingDirectory }}/*_build_temp/x264-*-shared/ + key: ${{ inputs.target }}-ffmpeg-deps-${{ inputs.type }}-${{ inputs.config }}-${{ steps.env-setup.outputs.hash }} - name: Build and Install FFmpeg Dependencies - if: ${{ steps.ffmpeg-deps-cache.outputs.cache-hit != 'true' }} - shell: zsh {0} - run: ./build-ffmpeg.zsh '*~ffmpeg' --target ${{ inputs.target }} --config ${{ inputs.config }} --${{ inputs.type }} + if: runner.os == 'macOS' && steps.ffmpeg-deps-cache.outputs.cache-hit != 'true' + shell: zsh --no-rcs --errexit --pipefail {0} + run: | + : Build and Install FFmpeg Dependencies + ./build-ffmpeg.zsh '*~ffmpeg' --target ${{ inputs.target }} --config ${{ inputs.config }} --${{ inputs.type }} + + - name: Build and Install FFmpeg Dependencies + if: runner.os == 'Windows' && steps.ffmpeg-deps-cache.outputs.cache-hit != 'true' + shell: pwsh + run: | + # Build and Install FFmpeg Dependencies + + $BuildArgs = @{ + PackageName = 'ffmpeg' + Target = '${{ inputs.target }}' + Configuration = '${{ inputs.config }}' + Shared = $(if ( '${{ inputs.type }}' -eq 'shared' ) { $true } else { $false }) + Dependencies = (Get-ChildItem deps.ffmpeg -filter '*.ps1' | Where-Object { $_.Name -ne '99-ffmpeg.ps1' } | ForEach-Object { $_.Name -replace "[0-9]+-(.+).ps1",'$1' }) + } + + ./Build-Dependencies.ps1 @BuildArgs - name: Restore FFmpeg from Cache id: ffmpeg-cache - uses: actions/cache@v3 + uses: actions/cache/restore@v3 with: path: | ${{ github.workspace }}/*_build_temp/FFmpeg*/* !${{ github.workspace }}/*_build_temp/FFmpeg*/.git - key: ${{ inputs.target }}-ffmpeg-${{ inputs.type }}-${{ steps.ffmpeg-env-setup.outputs.hash }}-${{ inputs.cacheRevision }} + key: ${{ inputs.target }}-ffmpeg-${{ inputs.type }}-${{ inputs.config }}-${{ steps.env-setup.outputs.hash }} + + - name: Build and Install FFmpeg + if: runner.os == 'macOS' + shell: zsh --no-rcs --errexit --pipefail {0} + run: | + : Build and Install FFmpeg - - name: Install FFmpeg - if: ${{ steps.ffmpeg-cache.outputs.cache-hit == 'true' }} - shell: zsh {0} - run: ./build-ffmpeg.zsh --skip-build --skip-unpack --target ${{ inputs.target }} --config ${{ inputs.config }} --${{ inputs.type }} + local -a build_args=( + --target ${{ inputs.target }} + --config ${{ inputs.config }} + --${{ inputs.type }} + ) + + if [[ '${{ steps.ffmpeg-cache.outputs.cache-hit }}' == 'true' ]] build_args+=(--skip-build --skip-unpack) + + ./build-ffmpeg.zsh ${build_args} - name: Build and Install FFmpeg - if: ${{ steps.ffmpeg-cache.outputs.cache-hit != 'true' }} - shell: zsh {0} - run: ./build-ffmpeg.zsh --target ${{ inputs.target }} --config ${{ inputs.config }} --${{ inputs.type }} + if: runner.os == 'Windows' + shell: pwsh + run: | + # Build and Install FFmpeg + + $BuildArgs = @{ + Package = 'ffmpeg' + Target = '${{ inputs.target }}' + Config = '${{ inputs.config }}' + Shared = $(if ( '${{ inputs.type }}' -eq 'shared' ) { $true } else { $false }) + SkipBuild = $(if ( '${{ steps.ffmpeg-cache.outputs.cache-hit }}' -eq 'true' ) { $true } else { $false }) + SkipUnpack = $(if ( '${{ steps.ffmpeg-cache.outputs.cache-hit }}' -eq 'true' ) { $true } else { $false }) + } + + ./Build-Dependencies.ps1 @BuildArgs + + - name: Save FFmpeg to Cache + if: github.event_name == 'push' + uses: actions/cache/save@v3 + with: + path: | + ${{ github.workspace }}/*_build_temp/FFmpeg*/* + !${{ github.workspace }}/*_build_temp/FFmpeg*/.git + key: ${{ inputs.target }}-ffmpeg-${{ inputs.type }}-${{ inputs.config }}-${{ steps.env-setup.outputs.hash }} + + - name: Save FFmpeg Dependencies to Cache + if: github.event_name == 'push' + uses: actions/cache/save@v3 + with: + path: | + ${{ inputs.workingDirectory }}/*_build_temp/* + !${{ inputs.workingDirectory }}/*_build_temp/**/.git + !${{ inputs.workingDirectory }}/*_build_temp/*.tar.gz + !${{ inputs.workingDirectory }}/*_build_temp/*.tar.xz + !${{ inputs.workingDirectory }}/*_build_temp/*.zip + !${{ inputs.workingDirectory }}/*_build_temp/FFmpeg* + !${{ inputs.workingDirectory }}/*_build_temp/x264-*-shared/ + key: ${{ inputs.target }}-ffmpeg-deps-${{ inputs.type }}-${{ inputs.config }}-${{ steps.env-setup.outputs.hash }} diff --git a/.github/actions/build-qt/action.yaml b/.github/actions/build-qt/action.yaml index 012abf2c4..7ffa15a92 100644 --- a/.github/actions/build-qt/action.yaml +++ b/.github/actions/build-qt/action.yaml @@ -87,6 +87,7 @@ runs: # Build and Install Windows Qt $Params = @{ + Package = 'qt' Target = '${{ inputs.target }}' Configuration = '${{ inputs.config }}' Shared = $true diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml index 6b41217ff..3f6607a06 100644 --- a/.github/workflows/main.yaml +++ b/.github/workflows/main.yaml @@ -53,44 +53,24 @@ jobs: echo "shortHash=${GITHUB_SHA:0:9}" >> $GITHUB_OUTPUT - ffmpeg-build: - name: 'Build FFmpeg' - runs-on: ${{ matrix.os }} + ffmpeg-macos-build: + name: Build FFmpeg for macOS + runs-on: macos-13 + needs: pre-checks strategy: fail-fast: true matrix: - target: [macos-arm64, macos-x86_64, linux-x86_64, windows-x64, windows-x86] + target: [macos-arm64, macos-x86_64] include: - target: macos-arm64 - os: 'macos-12' - config: 'Release' - type: 'static' - revision: 9 + config: Release + type: static - target: macos-x86_64 - os: 'macos-12' - config: 'Release' - type: 'static' - revision: 9 - - target: linux-x86_64 - os: 'ubuntu-22.04' - config: 'Release' - type: 'static' - revision: 9 - - target: windows-x64 - os: 'ubuntu-22.04' - config: 'Release' - type: 'static' - revision: 8 - - target: windows-x86 - os: 'ubuntu-22.04' - config: 'Release' - type: 'static' - revision: 8 - env: - CACHE_REVISION: ${{ matrix.revision }} + config: Release + type: static defaults: run: - shell: bash + shell: zsh --no-rcs --errexit --pipefail {0} steps: - name: Checkout uses: actions/checkout@v3 @@ -98,113 +78,138 @@ jobs: - name: Setup Environment id: setup run: | - case "${{ runner.os }}" in - Linux) - sudo apt update - sudo apt install zsh - ;; - macOS) - to_remove=() - - for formula in llvm gcc postgresql openjdk sox libsndfile flac libvorbis opusfile \ - libogg composer php gd freetype fontconfig webp libpng lame libtiff opus kotlin \ - sbt libxft libxcb; do - if [[ -d /usr/local/opt/"${formula}" ]]; then - to_remove+=(${formula}) - fi - done - if [[ ${#to_remove} -gt 0 ]]; then - brew uninstall --ignore-dependencies ${to_remove[@]} - fi - ;; - esac + local -a to_remove=() - target='${{ matrix.target }}' - artifact_name="ffmpeg-${target}-${{ github.sha }}" - file_name="${target%%-*}-ffmpeg-$(date +"%Y-%m-%d")-${target##*-}.tar.xz" - dsym_artifact_name="ffmpeg-${target}-dSYMs-${{ github.sha }}" - dsym_file_name="${target%%-*}-ffmpeg-$(date +"%Y-%m-%d")-${target##*-}-dSYMs.tar.xz" + for formula (llvm gcc postgresql openjdk sox libsndfile flac libvorbis opusfile \ + libogg composer php gd freetype fontconfig webp libpng lame libtiff opus kotlin \ + sbt libxft libxcb) { + if [[ -d /usr/local/opt/${formula} ]] to_remove+=(${formula}) + } - echo "artifactName=${artifact_name}" >> $GITHUB_OUTPUT - echo "artifactFileName=${file_name}" >> $GITHUB_OUTPUT - echo "dsymArtifactName=${dsym_artifact_name}" >> $GITHUB_OUTPUT - echo "dsymArtifactFileName=${dsym_file_name}" >> $GITHUB_OUTPUT - echo "ccacheDate=$(date +"%Y-%m-%d")" >> $GITHUB_OUTPUT + if (( #to_remove )) brew uninstall --ignore-dependencies ${to_remove} + + local -r date_string=$(date +"%Y-%m-%d") + local -r target='${{ matrix.target }}' + + artifact_name="ffmpeg-${target}-${{ needs.pre-checks.outputs.shortHash }}" + file_name="${target%%-*}-ffmpeg-${date_string}-${target##*-}.tar.xz" + dsym_artifact_name="ffmpeg-${target}-dSYMs-${{ needs.pre-checks.outputs.shortHash }}" + dsym_file_name="${target%%-*}-ffmpeg-${date_string}-${target##*-}-dSYMs.tar.xz" + + print "artifactName=${artifact_name}" >> $GITHUB_OUTPUT + print "artifactFileName=${file_name}" >> $GITHUB_OUTPUT + print "dsymArtifactName=${dsym_artifact_name}" >> $GITHUB_OUTPUT + print "dsymArtifactFileName=${dsym_file_name}" >> $GITHUB_OUTPUT + print "ccacheDate=${date_string}" >> $GITHUB_OUTPUT - name: Restore Compilation Cache id: ccache-cache - uses: actions/cache@v3 + uses: actions/cache/restore@v3 with: path: ${{ github.workspace }}/.ccache key: ${{ matrix.target }}-ccache-ffmpeg-${{ steps.setup.outputs.ccacheDate }} restore-keys: | ${{ matrix.target }}-ccache-ffmpeg- - - name: Check for GitHub Labels - id: seekingTesters - if: ${{ github.event_name == 'pull_request' }} - run: | - if [[ -n "$(curl -H "Authorization: Bearer ${{ secrets.GITHUB_TOKEN }}" -s "${{ github.event.pull_request.url }}" | jq -e '.labels[] | select(.name == "Seeking Testers")')" ]]; then - echo "found=true" >> $GITHUB_OUTPUT - else - echo "found=false" >> $GITHUB_OUTPUT - fi - - name: Build FFmpeg uses: ./.github/actions/build-ffmpeg with: target: ${{ matrix.target }} type: ${{ matrix.type }} config: ${{ matrix.config }} - cacheRevision: ${{ env.CACHE_REVISION }} - name: Publish Build Artifacts - if: ${{ success() && (github.event_name != 'pull_request' || steps.seekingTesters.outputs.found == 'true') }} + if: github.event_name != 'pull_request' || fromJSON(needs.pre-checks.outputs.seekingTesters) uses: actions/upload-artifact@v3 with: name: ${{ steps.setup.outputs.artifactName }} path: ${{ github.workspace }}/${{ matrix.target }}/${{ steps.setup.outputs.artifactFileName }} - name: Publish Debug Symbol Artifacts - if: ${{ startsWith(matrix.os, 'macos') && success() && (github.event_name != 'pull_request' || steps.seekingTesters.outputs.found == 'true') }} + if: github.event_name != 'pull_request' || fromJSON(needs.pre-checks.outputs.seekingTesters) uses: actions/upload-artifact@v3 with: name: ${{ steps.setup.outputs.dsymArtifactName }} path: ${{ github.workspace }}/${{ matrix.target }}/${{ steps.setup.outputs.dsymArtifactFileName }} - ffmpeg-package-universal: - name: 'Build FFmpeg (Universal)' - runs-on: macos-12 - needs: [ffmpeg-build] + - name: Save Compilation Cache + if: github.event_name == 'push' + uses: actions/cache/save@v3 + with: + path: ${{ github.workspace }}/.ccache + key: ${{ matrix.target }}-ccache-ffmpeg-${{ steps.setup.outputs.ccacheDate }} + + ffmpeg-windows-build: + name: Build FFmpeg for Windows + runs-on: windows-2022 + needs: pre-checks + strategy: + fail-fast: true + matrix: + target: [x64, x86] + include: + - target: x64 + config: Release + type: static + - target: x86 + config: Release + type: static + defaults: + run: + shell: pwsh steps: - name: Checkout uses: actions/checkout@v3 - - name: Check for GitHub Labels - id: seekingTesters - if: ${{ github.event_name == 'pull_request' }} + - name: Setup Environment + id: setup run: | - if [[ -n "$(curl -H "Authorization: Bearer ${{ secrets.GITHUB_TOKEN }}" -s "${{ github.event.pull_request.url }}" | jq -e '.labels[] | select(.name == "Seeking Testers")')" ]]; then - echo "found=true" >> $GITHUB_OUTPUT - else - echo "found=false" >> $GITHUB_OUTPUT - fi + # Setup Environment + + $Target='${{ matrix.target }}' + $ArtifactName="deps-ffmpeg-${Target}-${{ needs.pre-checks.outputs.shortHash }}" + $FileName="windows-ffmpeg-$(Get-Date -Format 'yyyy-MM-dd')-${Target}.zip" + + "artifactName=${ArtifactName}" >> $env:GITHUB_OUTPUT + "artifactFileName=${FileName}" >> $env:GITHUB_OUTPUT + + - name: Build FFmpeg + uses: ./.github/actions/build-ffmpeg + with: + target: ${{ matrix.target }} + type: ${{ matrix.type }} + config: ${{ matrix.config }} + + - name: Publish Build Artifacts + if: github.event_name != 'pull_request' || fromJSON(needs.pre-checks.outputs.seekingTesters) + uses: actions/upload-artifact@v3 + with: + name: ${{ steps.setup.outputs.artifactName }} + path: ${{ github.workspace }}\windows-${{ matrix.target }}\${{ steps.setup.outputs.artifactFileName }} + + ffmpeg-package-universal: + name: Build FFmpeg (Universal) + runs-on: macos-13 + needs: [pre-checks, ffmpeg-macos-build] + steps: + - name: Checkout + uses: actions/checkout@v3 - name: Create universal binary package - if: ${{ success() && (github.event_name != 'pull_request' || steps.seekingTesters.outputs.found == 'true') }} + if: github.event_name != 'pull_request' || fromJSON(needs.pre-checks.outputs.seekingTesters) uses: ./.github/actions/create-universal with: - arm64: 'ffmpeg-macos-arm64-${{ github.sha }}' - x86_64: 'ffmpeg-macos-x86_64-${{ github.sha }}' - outputName: 'ffmpeg-macos-universal-${{ github.sha }}' + arm64: ffmpeg-macos-arm64-${{ needs.pre-checks.outputs.shortHash }} + x86_64: ffmpeg-macos-x86_64-${{ needs.pre-checks.outputs.shortHash }} + outputName: ffmpeg-macos-universal-${{ needs.pre-checks.outputs.shortHash }} - name: Create universal dSYM package - if: ${{ success() && (github.event_name != 'pull_request' || steps.seekingTesters.outputs.found == 'true') }} + if: github.event_name != 'pull_request' || fromJSON(needs.pre-checks.outputs.seekingTesters) uses: ./.github/actions/create-universal with: - arm64: 'ffmpeg-macos-arm64-dSYMs-${{ github.sha }}' - x86_64: 'ffmpeg-macos-x86_64-dSYMs-${{ github.sha }}' - outputName: 'ffmpeg-macos-universal-dSYMs-${{ github.sha }}' + arm64: ffmpeg-macos-arm64-dSYMs-${{ needs.pre-checks.outputs.shortHash }} + x86_64: ffmpeg-macos-x86_64-dSYMs-${{ needs.pre-checks.outputs.shortHash }} + outputName: ffmpeg-macos-universal-dSYMs-${{ needs.pre-checks.outputs.shortHash }} macos-build: name: Build macOS Dependencies @@ -481,7 +486,7 @@ jobs: uses: actions/upload-artifact@v3 with: name: ${{ steps.setup.outputs.artifactName }} - path: ${{ github.workspace }}\windows\${{ steps.setup.outputs.artifactFileName }} + path: ${{ github.workspace }}\windows-${{ matrix.target }}\${{ steps.setup.outputs.artifactFileName }} windows-qt6-build: name: Build Qt6 (Windows) @@ -518,7 +523,7 @@ jobs: uses: actions/upload-artifact@v3 with: name: ${{ steps.setup.outputs.artifactName }} - path: ${{ github.workspace }}/windows/${{ steps.setup.outputs.artifactFileName }} + path: ${{ github.workspace }}/windows-${{ matrix.target }}/${{ steps.setup.outputs.artifactFileName }} windows-qt6-package: name: Package Windows Qt6 @@ -584,28 +589,6 @@ jobs: done - - name: 'Package Linux dependencies' - run: | - shopt -s extglob - - for arch in x86_64; do - _temp=$(mktemp -d) - pushd "${_temp}" > /dev/null - - for artifact in ${{ github.workspace }}/**/linux-*-${arch}.*; do - case ${artifact} in - *.zip) unzip ${artifact} > /dev/null ;; - *.tar.xz) XZ_OPT=-T0 tar -xvJf ${artifact} ;; - *.tar.gz) tar -xvzf ${artifact} ;; - esac - done - - XZ_OPT=-T0 tar -cvJf linux-deps-${{ steps.metadata.outputs.version }}-${arch}.tar.xz -- * - mv linux-deps-${{ steps.metadata.outputs.version }}-${arch}.tar.xz ${{ github.workspace }} - - popd > /dev/null - done - - name: Package macOS dependencies run: | : Package macOS dependencies @@ -655,4 +638,3 @@ jobs: ${{ github.workspace }}/macos-*-arm64.tar.xz ${{ github.workspace }}/macos-*-x86_64.tar.xz ${{ github.workspace }}/macos-*-universal.tar.xz - ${{ github.workspace }}/linux-*-x86_64.tar.xz diff --git a/.github/workflows/scheduled.yaml b/.github/workflows/scheduled.yaml index fd63b2efe..0031a7d3c 100644 --- a/.github/workflows/scheduled.yaml +++ b/.github/workflows/scheduled.yaml @@ -73,6 +73,88 @@ jobs: --jq '.actions_caches.[] | select(.ref|test("refs/heads/master")|not) | {id, key, ref} | join(";")' &> /dev/null)" echo '::endgroup::' + ffmpeg-macos-build: + name: Build FFmpeg for macOS + runs-on: macos-13 + strategy: + fail-fast: true + matrix: + target: [macos-arm64, macos-x86_64] + include: + - target: macos-arm64 + config: Release + type: static + - target: macos-x86_64 + config: Release + type: static + defaults: + run: + shell: zsh --no-rcs --errexit --pipefail {0} + steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: Setup Environment + id: setup + run: | + local -a to_remove=() + + for formula (llvm gcc postgresql openjdk sox libsndfile flac libvorbis opusfile \ + libogg composer php gd freetype fontconfig webp libpng lame libtiff opus kotlin \ + sbt libxft libxcb) { + if [[ -d /usr/local/opt/${formula} ]] to_remove+=(${formula}) + } + + if (( #to_remove )) brew uninstall --ignore-dependencies ${to_remove} + + local -r date_string=$(date +"%Y-%m-%d") + print "ccacheDate=${date_string} >> $GITHUB_OUTPUT + + - name: Restore Compilation Cache + id: ccache-cache + uses: actions/cache@v3 + with: + path: ${{ github.workspace }}/.ccache + key: ${{ matrix.target }}-ccache-ffmpeg-${{ steps.setup.outputs.ccacheDate }} + restore-keys: | + ${{ matrix.target }}-ccache-ffmpeg- + + - name: Build FFmpeg + uses: ./.github/actions/build-ffmpeg + with: + target: ${{ matrix.target }} + type: ${{ matrix.type }} + config: ${{ matrix.config }} + + ffmpeg-windows-build: + name: Build FFmpeg for Windows + runs-on: windows-2022 + needs: pre-checks + strategy: + fail-fast: true + matrix: + target: [x64, x86] + include: + - target: x64 + config: Release + type: static + - target: x86 + config: Release + type: static + defaults: + run: + shell: pwsh + steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: Build FFmpeg + uses: ./.github/actions/build-ffmpeg + with: + target: ${{ matrix.target }} + type: ${{ matrix.type }} + config: ${{ matrix.config }} + macos-build: name: Build macOS Dependencies runs-on: macos-13