| # 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, synchronize] | 
 |  | 
 | 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: [windows-latest] | 
 |     strategy: | 
 |       fail-fast: false | 
 |       matrix: | 
 |         include: | 
 |           - triplet: x86-windows-dynamic | 
 |             arch: '-A Win32' | 
 |             build_shared_libs: 'ON' | 
 |           - triplet: x64-windows-dynamic | 
 |             arch: '-A x64' | 
 |             build_shared_libs: 'ON' | 
 |           - triplet: x86-windows-static | 
 |             arch: '-A Win32' | 
 |             build_shared_libs: 'OFF' | 
 |           - triplet: x64-windows-static | 
 |             arch: '-A x64' | 
 |             build_shared_libs: 'OFF' | 
 |  | 
 |     env: | 
 |       VCPKG_VERSION: '2022.11.14' | 
 |       VCPKG_ROOT: vcpkg | 
 |       VCPKG_DISABLE_METRICS: 1 | 
 |  | 
 |     steps: | 
 |     - name: Checkout the source | 
 |       uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0 | 
 |       with: | 
 |         submodules: false | 
 |         fetch-depth: 1 | 
 |  | 
 |     - uses: actions/cache@704facf57e6136b1bc63b828d79edcd491f0ee84 # v3.3.2 | 
 |       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' | 
 |       # wget doesn't seem to work under bash. | 
 |       shell: 'powershell' | 
 |       run: | | 
 |         C:\msys64\usr\bin\wget.exe -nv ` | 
 |            https://github.com/microsoft/vcpkg/archive/refs/tags/${{ env.VCPKG_VERSION }}.zip ` | 
 |           -O 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: Upload artifacts | 
 |       uses: actions/upload-artifact@a8a3f3ad30e3422c9c7b888a15615d19a852ae32 # v3.1.3 | 
 |       with: | 
 |         name: brotli-${{matrix.triplet}} | 
 |         path: | | 
 |           prefix/bin/* | 
 |  | 
 |     - name: Package release zip | 
 |       shell: 'powershell' | 
 |       run: | | 
 |         Compress-Archive -Path prefix\bin\* ` | 
 |           -DestinationPath brotli-${{matrix.triplet}}.zip | 
 |  | 
 |     - name: Upload binaries to release | 
 |       if: github.event_name == 'release' | 
 |       uses: softprops/action-gh-release@de2c0eb89ae2a093876385947365aca7b0e5f844 # v0.1.15 | 
 |       with: | 
 |         files: brotli-${{matrix.triplet}}.zip | 
 |  | 
 |   testdata_upload: | 
 |     name: Upload testdata | 
 |     runs-on: 'ubuntu-latest' | 
 |     defaults: | 
 |       run: | 
 |         shell: bash | 
 |     steps: | 
 |  | 
 |     - name: Checkout the source | 
 |       uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0 | 
 |       with: | 
 |         submodules: false | 
 |         fetch-depth: 1 | 
 |  | 
 |     - name: Compress testdata | 
 |       run: | | 
 |         tar cvfJ testdata.txz tests/testdata | 
 |  | 
 |     - name: Upload archive to release | 
 |       if: github.event_name == 'release' | 
 |       uses: softprops/action-gh-release@de2c0eb89ae2a093876385947365aca7b0e5f844 # v0.1.15 | 
 |       with: | 
 |         files: testdata.txz | 
 |  | 
 |   archive_build: | 
 |     needs: testdata_upload | 
 |     name: Build and test from archive | 
 |     runs-on: 'ubuntu-latest' | 
 |     defaults: | 
 |       run: | 
 |         shell: bash | 
 |     steps: | 
 |  | 
 |     - name: Checkout the source | 
 |       uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.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 |