mirror of
https://github.com/google/brotli.git
synced 2026-07-08 17:56:58 +00:00
254 lines
6.9 KiB
YAML
254 lines
6.9 KiB
YAML
# 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@9af89fc71515a100421586dfdb3dc9c984fbf411 # v2.19.4
|
|
with:
|
|
egress-policy: audit
|
|
|
|
- name: Checkout the source
|
|
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
|
with:
|
|
submodules: false
|
|
fetch-depth: 1
|
|
persist-credentials: false
|
|
|
|
- uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
|
|
if: github.event_name != 'release'
|
|
id: cache-vcpkg
|
|
with:
|
|
path: vcpkg
|
|
key: release-${{ runner.os }}-vcpkg-${{ env.VCPKG_VERSION }}-${{ matrix.triplet }}
|
|
# TODO(eustas): remove when https://github.com/zizmorcore/zizmor/issues/2071 is fixed
|
|
lookup-only: ${{ startsWith(github.ref, 'refs/tags/') }}
|
|
|
|
- name: Download vcpkg
|
|
if: github.event_name == 'release' || 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: github.event_name == 'release' || 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@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
|
|
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@9af89fc71515a100421586dfdb3dc9c984fbf411 # v2.19.4
|
|
with:
|
|
egress-policy: audit
|
|
|
|
- name: Checkout the source
|
|
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
|
with:
|
|
submodules: false
|
|
fetch-depth: 1
|
|
persist-credentials: false
|
|
|
|
- name: Compress testdata
|
|
run: |
|
|
tar cvfJ testdata.txz tests/testdata
|
|
|
|
- name: Upload archive
|
|
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
|
|
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@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
|
with:
|
|
submodules: false
|
|
fetch-depth: 1
|
|
persist-credentials: false
|
|
|
|
- name: Download all artifacts
|
|
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
|
|
with:
|
|
path: release_assets
|
|
merge-multiple: true
|
|
|
|
- name: Publish assets
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
GITHUB_EVENT_RELEASE_TAG_NAME: ${{ github.event.release.tag_name }}
|
|
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@9af89fc71515a100421586dfdb3dc9c984fbf411 # v2.19.4
|
|
with:
|
|
egress-policy: audit
|
|
|
|
- name: Checkout the source
|
|
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
|
with:
|
|
submodules: false
|
|
fetch-depth: 1
|
|
persist-credentials: false
|
|
|
|
- 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
|