| # 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 ] |
| |
| 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-2022] |
| 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@v3 |
| with: |
| submodules: false |
| fetch-depth: 1 |
| |
| - uses: actions/cache@v3 |
| 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@v3 |
| with: |
| name: brotli-${{matrix.triplet}} |
| path: | |
| prefix/bin/* |
| |
| - name: Package release zip |
| if: github.event_name == 'release' |
| shell: 'powershell' |
| run: | |
| Compress-Archive -Path prefix\bin\* ` |
| -DestinationPath brotli-${{matrix.triplet}}.zip |
| |
| - name: Upload binaries to release |
| if: github.event_name == 'release' |
| uses: AButler/upload-release-assets@v2.0 |
| with: |
| files: brotli-${{matrix.triplet}}.zip |
| repo-token: ${{ secrets.GITHUB_TOKEN }} |