Merge pull request #1528 from haberman/23-cherrypick #3959
This file contains 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
name: Bazel Tests | |
on: | |
push: | |
branches: | |
- main | |
- '[0-9]+.x' | |
pull_request: | |
branches: | |
- main | |
- '[0-9]+.x' | |
workflow_dispatch: | |
jobs: | |
ubuntu: | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false # Don't cancel all jobs if one fails. | |
matrix: | |
include: | |
- { NAME: "Fastbuild", BAZEL: bazel, CC: clang, os: ubuntu-20-large, flags: "" } | |
- { NAME: "Optmized", BAZEL: bazel, CC: clang, os: ubuntu-20-large, flags: "-c opt" } # Some warnings only fire with -c opt | |
- { NAME: "GCC Optimized", BAZEL: bazel, CC: gcc-12, os: ubuntu-22.04, flags: "-c opt" } | |
- { NAME: "FastTable", BAZEL: bazel, CC: clang, os: ubuntu-20-large, flags: "--//:fasttable_enabled=true -- -cmake:test_generated_files" } | |
- { NAME: "ASAN", BAZEL: bazel, CC: clang, os: ubuntu-20-large, flags: "--config=asan -c dbg -- -benchmarks:benchmark -python/..." } | |
- { NAME: "UBSAN", BAZEL: bazel, CC: clang, os: ubuntu-20-large, flags: "--config=ubsan -c dbg -- -benchmarks:benchmark -python/... -lua/...", install: "libunwind-dev" } | |
- { NAME: "32-bit", BAZEL: bazel, CC: clang, os: ubuntu-20-large, flags: "--copt=-m32 --linkopt=-m32 -- -... benchmarks:benchmark ", install: "g++-multilib" } | |
- { NAME: "macOS", BAZEL: bazel, CC: clang, os: macos-11 } | |
- { NAME: "Windows", BAZEL: bazel, os: windows-2019, startup-flags: "--output_user_root=C:/tmp", flags: "--config=cpp17_msvc", targets: "upb/... upbc/... python/... protos/... protos_generator/..." } | |
# We support two Bazel versions back per https://opensource.google/documentation/policies/cplusplus-support | |
- { NAME: "Bazel 4.1.0", BAZEL: bazel-4.1.0-linux-x86_64, CC: clang, os: ubuntu-20-large } | |
- { NAME: "Bazel 5.3.0", BAZEL: bazel-5.3.0-linux-x86_64, CC: clang, os: ubuntu-20-large } | |
name: ${{ matrix.NAME }} | |
steps: | |
- uses: actions/checkout@v2 | |
- name: Set up Cloud SDK | |
uses: google-github-actions/auth@v0 | |
with: | |
credentials_json: ${{ secrets.GOOGLE_CREDENTIALS }} | |
export_environment_variables: true | |
if: ${{ github.event.pull_request.head.repo.full_name == 'protocolbuffers/upb' }} | |
- name: Download historical Bazel version | |
run: | | |
FILENAME=$HOME/bin/${{ matrix.BAZEL }} | |
VERSION=$(echo ${{ matrix.BAZEL }} | cut -d- -f 2 ) | |
mkdir -p $HOME/bin | |
echo $HOME/bin >> $GITHUB_PATH | |
wget -O $FILENAME https://github.com/bazelbuild/bazel/releases/download/$VERSION/${{ matrix.BAZEL }} | |
chmod a+x $FILENAME | |
if: ${{ matrix.BAZEL != 'bazel' }} | |
- name: Check compiler versions | |
if: matrix.CC | |
run: ${{ matrix.CC }} --version | |
- name: Check Bazel versions | |
run: ${{ matrix.BAZEL }} --version | |
- id: bazel-cache | |
name: Set up Bazel caching | |
uses: ./.github/actions/setup-bazel-cache | |
- name: Setup Python venv | |
if: ${{ runner.os != 'Windows' }} | |
run: rm -rf /tmp/venv && python3 -m venv /tmp/venv && source /tmp/venv/bin/activate && python3 --version | |
- name: Install dependencies | |
run: sudo apt update && sudo apt install -y ${{ matrix.install }} | |
if: matrix.install != '' | |
- name: Install numpy | |
run: pip3 install numpy | |
- name: Setup environment variables | |
if: matrix.CC | |
run: echo "CC=${{ matrix.CC }}" >> $GITHUB_ENV | |
- name: Run tests | |
run: cd ${{ github.workspace }} && ${{ matrix.BAZEL }} ${{ matrix.startup-flags }} test --test_output=errors ${{ steps.bazel-cache.outputs.cache_args }} ${{ matrix.targets || '...' }} ${{ matrix.flags }} | |
no-python: | |
runs-on: ubuntu-20-large | |
strategy: | |
fail-fast: false # Don't cancel all jobs if one fails. | |
name: "No System Python" | |
steps: | |
- uses: actions/checkout@v2 | |
- name: Set up Cloud SDK | |
uses: google-github-actions/auth@v0 | |
with: | |
credentials_json: ${{ secrets.GOOGLE_CREDENTIALS }} | |
export_environment_variables: true | |
if: ${{ github.event.pull_request.head.repo.full_name == 'protocolbuffers/upb' }} | |
- id: bazel-cache | |
name: Set up Bazel caching | |
uses: ./.github/actions/setup-bazel-cache | |
- name: Uninstall python | |
run: which python3 && sudo mv `which python3` /tmp && ! which python3 | |
- name: Run tests | |
run: cd ${{ github.workspace }} && bazel test --test_output=errors ${{ steps.bazel-cache.outputs.cache_args }} //python/... -- -//python/dist:source_wheel |