# 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-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@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