Add py free-threaded support #1371
This file contains hidden or 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
| # Copyright 2023 Google Inc. All Rights Reserved. | |
| # | |
| # Distributed under MIT license. | |
| # See file LICENSE for detail or copy at https://opensource.org/licenses/MIT | |
| # Workflow for building the release binaries. | |
| name: Release build / deploy | |
| on: | |
| push: | |
| branches: | |
| - master | |
| - v*.*.* | |
| release: | |
| types: [ published ] | |
| pull_request: | |
| types: [opened, reopened, labeled, unlabeled, synchronize] | |
| permissions: | |
| contents: read | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.ref }}-${{ github.event_name }} | |
| cancel-in-progress: ${{ github.event_name == 'pull_request' }} | |
| jobs: | |
| windows_build: | |
| name: Windows Build (vcpkg / ${{ matrix.triplet }}) | |
| runs-on: ${{ matrix.runs_on }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| - triplet: x86-windows-dynamic | |
| arch: '-A Win32' | |
| build_shared_libs: 'ON' | |
| runs_on: windows-latest | |
| - triplet: x64-windows-dynamic | |
| arch: '-A x64' | |
| build_shared_libs: 'ON' | |
| runs_on: windows-latest | |
| - triplet: arm64-windows-dynamic | |
| arch: '-A ARM64' | |
| build_shared_libs: 'ON' | |
| runs_on: windows-11-arm | |
| - triplet: x86-windows-static | |
| arch: '-A Win32' | |
| build_shared_libs: 'OFF' | |
| runs_on: windows-latest | |
| - triplet: x64-windows-static | |
| arch: '-A x64' | |
| build_shared_libs: 'OFF' | |
| runs_on: windows-latest | |
| - triplet: arm64-windows-static | |
| arch: '-A ARM64' | |
| build_shared_libs: 'OFF' | |
| runs_on: windows-11-arm | |
| env: | |
| VCPKG_VERSION: '2022.11.14' | |
| VCPKG_ROOT: vcpkg | |
| VCPKG_DISABLE_METRICS: 1 | |
| steps: | |
| - name: Harden Runner | |
| uses: step-security/harden-runner@95d9a5deda9de15063e7595e9719c11c38c90ae2 # v2.13.2 | |
| with: | |
| egress-policy: audit | |
| - name: Checkout the source | |
| uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | |
| with: | |
| submodules: false | |
| fetch-depth: 1 | |
| - uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 | |
| id: cache-vcpkg | |
| with: | |
| path: vcpkg | |
| key: release-${{ runner.os }}-vcpkg-${{ env.VCPKG_VERSION }}-${{ matrix.triplet }} | |
| - name: Download vcpkg | |
| if: steps.cache-vcpkg.outputs.cache-hit != 'true' | |
| shell: 'powershell' | |
| run: | | |
| Invoke-WebRequest -Uri "https://github.com/microsoft/vcpkg/archive/refs/tags/${{ env.VCPKG_VERSION }}.zip" -OutFile "vcpkg.zip" | |
| - name: Bootstrap vcpkg | |
| if: steps.cache-vcpkg.outputs.cache-hit != 'true' | |
| shell: 'bash' | |
| run: | | |
| set -x | |
| unzip -q vcpkg.zip | |
| rm -rf ${VCPKG_ROOT} | |
| mv vcpkg-${VCPKG_VERSION} ${VCPKG_ROOT} | |
| ${VCPKG_ROOT}/bootstrap-vcpkg.sh | |
| - name: Configure | |
| shell: 'bash' | |
| run: | | |
| set -x | |
| mkdir out | |
| cmake -Bout -H. ${{ matrix.arch }} \ | |
| -DBUILD_TESTING=OFF \ | |
| -DBUILD_SHARED_LIBS=${{ matrix.build_shared_libs }} \ | |
| -DCMAKE_BUILD_TYPE=Release \ | |
| -DCMAKE_INSTALL_PREFIX=`pwd`/prefix \ | |
| -DCMAKE_TOOLCHAIN_FILE=${VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake \ | |
| -DVCPKG_TARGET_TRIPLET=${{ matrix.triplet }} \ | |
| # | |
| - name: Build | |
| shell: 'bash' | |
| run: | | |
| set -x | |
| cmake --build out --config Release | |
| - name: Install | |
| shell: 'bash' | |
| run: | | |
| set -x | |
| cmake --build out --config Release --target install | |
| cp LICENSE prefix/bin/LICENSE.brotli | |
| - name: Package release zip | |
| shell: 'powershell' | |
| run: | | |
| Compress-Archive -Path prefix\bin\* ` | |
| -DestinationPath brotli-${{matrix.triplet}}.zip | |
| - name: Upload package | |
| uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 | |
| with: | |
| name: brotli-${{matrix.triplet}} | |
| path: brotli-${{matrix.triplet}}.zip | |
| compression-level: 0 | |
| testdata_upload: | |
| name: Upload testdata | |
| runs-on: 'ubuntu-latest' | |
| defaults: | |
| run: | |
| shell: bash | |
| steps: | |
| - name: Harden Runner | |
| uses: step-security/harden-runner@95d9a5deda9de15063e7595e9719c11c38c90ae2 # v2.13.2 | |
| with: | |
| egress-policy: audit | |
| - name: Checkout the source | |
| uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | |
| with: | |
| submodules: false | |
| fetch-depth: 1 | |
| - name: Compress testdata | |
| run: | | |
| tar cvfJ testdata.txz tests/testdata | |
| - name: Upload archive | |
| uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 | |
| with: | |
| name: testdata | |
| path: testdata.txz | |
| compression-level: 0 | |
| publish_release_assets: | |
| name: Publish release assets | |
| needs: [windows_build, testdata_upload] | |
| if: github.event_name == 'release' | |
| runs-on: [ubuntu-latest] | |
| permissions: | |
| contents: write | |
| steps: | |
| - name: Checkout the source | |
| uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | |
| with: | |
| submodules: false | |
| fetch-depth: 1 | |
| - name: Download all artifacts | |
| uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 | |
| with: | |
| path: release_assets | |
| merge-multiple: true | |
| - name: Publish assets | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| run: | | |
| gh release upload ${{ github.event.release.tag_name }} ./release_assets/* | |
| archive_build: | |
| needs: publish_release_assets | |
| name: Build and test from archive | |
| runs-on: 'ubuntu-latest' | |
| defaults: | |
| run: | |
| shell: bash | |
| steps: | |
| - name: Harden Runner | |
| uses: step-security/harden-runner@95d9a5deda9de15063e7595e9719c11c38c90ae2 # v2.13.2 | |
| with: | |
| egress-policy: audit | |
| - name: Checkout the source | |
| uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | |
| with: | |
| submodules: false | |
| fetch-depth: 1 | |
| - name: Archive | |
| run: | | |
| git archive HEAD -o archive.tgz | |
| - name: Pick tag | |
| run: | | |
| echo "BROTLI_TAG=$(git describe --tags --abbrev=0)" >> $GITHUB_ENV | |
| - name: Extract | |
| run: | | |
| mkdir archive | |
| cd archive | |
| tar xvzf ../archive.tgz | |
| - name: Download testdata | |
| run: | | |
| cd archive | |
| scripts/download_testdata.sh | |
| - name: Configure and Build | |
| run: | | |
| cd archive | |
| cmake -B out . | |
| cmake --build out | |
| - name: Test | |
| run: | | |
| cd archive | |
| cd out | |
| ctest |