Update README.md #3961
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: "Optimized", 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 -python/...", install: "g++-multilib" } | |
- { NAME: "32-bit ASAN", BAZEL: bazel, CC: clang, os: ubuntu-20-large, flags: "--config=asan -c dbg --copt=-m32 --linkopt=-m32 -- -//benchmarks/... -//python/... -//upb/message:copy_test -//upb/message:promote_test -//upb/message:test -//upb/test:test_generated_code", install: "g++-multilib" } | |
- { 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/..." } | |
- { NAME: "macOS", BAZEL: bazel, CC: clang, os: macos-11 } | |
# Current github runners are all Intel based, so just build/compile for Apple Silicon to detect issues there. | |
- { NAME: "macOS ARM (build only)", BAZEL: bazel, BAZEL_CMD: build, CC: clang, os: macos-11, flags: "--cpu=darwin_arm64"} | |
# We support two Bazel versions back per https://opensource.google/documentation/policies/cplusplus-support | |
- { NAME: "Bazel 5.3.0", BAZEL: bazel-5.3.0-linux-x86_64, CC: clang, os: ubuntu-20-large } | |
- { NAME: "Bazel 6.1.0", BAZEL: bazel-6.1.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 }} ${{ matrix.BAZEL_CMD || 'test' }} --test_output=errors ${{ steps.bazel-cache.outputs.cache_args }} ${{ matrix.targets || '...' }} ${{ matrix.flags }} | |
- uses: actions/upload-artifact@v3 | |
with: | |
name: logs | |
path: | | |
**/*.log | |
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 |