Protocol Buffers - Google's data interchange format (grpc依赖)
https://developers.google.com/protocol-buffers/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
99 lines
4.8 KiB
99 lines
4.8 KiB
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 }} |
|
env: |
|
BAZEL_CACHE: --remote_cache=https://storage.googleapis.com/protobuf-bazel-cache/upb |
|
|
|
strategy: |
|
fail-fast: false # Don't cancel all jobs if one fails. |
|
matrix: |
|
include: |
|
- { NAME: "Fastbuild", BAZEL: bazel, CC: clang, os: ubuntu-20.04, flags: "" } |
|
- { NAME: "Optmized", BAZEL: bazel, CC: clang, os: ubuntu-20.04, flags: "-c opt" } # Some warnings only fire with -c opt |
|
- { NAME: "GCC Optimized", BAZEL: bazel, CC: gcc, os: ubuntu-20.04, flags: "-c opt" } |
|
- { NAME: "FastTable", BAZEL: bazel, CC: clang, os: ubuntu-20.04, flags: "--//:fasttable_enabled=true -- -cmake:test_generated_files" } |
|
- { NAME: "ASAN", BAZEL: bazel, CC: clang, os: ubuntu-20.04, flags: "--config=asan -c dbg -- -benchmarks:benchmark -python/..." } |
|
- { NAME: "UBSAN", BAZEL: bazel, CC: clang, os: ubuntu-20.04, flags: "--config=ubsan -c dbg -- -benchmarks:benchmark -python/... -lua/...", install: "libunwind-dev" } |
|
- { NAME: "32-bit", BAZEL: bazel, CC: clang, os: ubuntu-20.04, flags: "--copt=-m32 --linkopt=-m32 -- -... benchmarks:benchmark ", install: "g++-multilib" } |
|
- { NAME: "macOS", BAZEL: bazel, CC: clang, os: macos-11, flags: "" } |
|
# 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.04, flags: "" } |
|
- { NAME: "Bazel 5.3.0", BAZEL: bazel-5.3.0-linux-x86_64, CC: clang, os: ubuntu-20.04, flags: "" } |
|
|
|
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: Set up Bazel read/write caching |
|
run: echo "BAZEL_CACHE_AUTH=--google_default_credentials" >> $GITHUB_ENV |
|
if: ${{ github.event.pull_request.head.repo.full_name == 'protocolbuffers/upb' }} |
|
- name: Set up Bazel read-only caching |
|
run: echo "BAZEL_CACHE_AUTH=--remote_upload_local_results=false" >> $GITHUB_ENV |
|
if: ${{ github.event.pull_request.head.repo.full_name != 'protocolbuffers/upb' }} |
|
- name: Setup Python venv |
|
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: source /tmp/venv/bin/activate && pip3 install numpy |
|
- name: Run tests |
|
run: cd ${{ github.workspace }} && source /tmp/venv/bin/activate && CC=${{ matrix.CC }} ${{ matrix.BAZEL }} test --test_output=errors $BAZEL_CACHE $BAZEL_CACHE_AUTH ... ${{ matrix.flags }} |
|
|
|
no-python: |
|
runs-on: ubuntu-20.04 |
|
env: |
|
BAZEL_CACHE: --remote_cache=https://storage.googleapis.com/protobuf-bazel-cache/upb |
|
|
|
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' }} |
|
- name: Set up Bazel read/write caching |
|
run: echo "BAZEL_CACHE_AUTH=--google_default_credentials" >> $GITHUB_ENV |
|
if: ${{ github.event.pull_request.head.repo.full_name == 'protocolbuffers/upb' }} |
|
- name: Set up Bazel read-only caching |
|
run: echo "BAZEL_CACHE_AUTH=--remote_upload_local_results=false" >> $GITHUB_ENV |
|
if: ${{ github.event.pull_request.head.repo.full_name != 'protocolbuffers/upb' }} |
|
- 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 $BAZEL_CACHE $BAZEL_CACHE_AUTH //python/...
|
|
|