I also deleted upb's `.github` directory since this is no longer used. PiperOrigin-RevId: 561119238pull/13766/head
parent
bf0451983d
commit
fa75cd454f
9 changed files with 12 additions and 373 deletions
@ -1,21 +0,0 @@ |
|||||||
name: "Setup Bazel Caching" |
|
||||||
description: "Sets up Bazel caching" |
|
||||||
inputs: |
|
||||||
cache_url: |
|
||||||
description: "URL of the Bazel cache to read/write" |
|
||||||
required: false |
|
||||||
default: https://storage.googleapis.com/protobuf-bazel-cache/upb |
|
||||||
read_only: |
|
||||||
description: "If true, we can read from the cache but not write it." |
|
||||||
required: false |
|
||||||
default: ${{ github.event.pull_request.head.repo.full_name != 'protocolbuffers/upb' }} |
|
||||||
outputs: |
|
||||||
cache_args: |
|
||||||
description: "Caching related arguments to pass to 'bazel build" |
|
||||||
value: --remote_cache=${{ inputs.cache_url }} ${{ steps.set_auth_arg.outputs.auth_arg }} |
|
||||||
runs: |
|
||||||
using: "composite" |
|
||||||
steps: |
|
||||||
- id: set_auth_arg |
|
||||||
run: echo auth_arg=${{ inputs.read_only == 'true' && '--remote_upload_local_results=false' || '--google_default_credentials' }} >> $GITHUB_OUTPUT |
|
||||||
shell: bash |
|
@ -1,107 +0,0 @@ |
|||||||
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 |
|
@ -1,22 +0,0 @@ |
|||||||
name: Check ClangFormat |
|
||||||
|
|
||||||
on: |
|
||||||
push: |
|
||||||
branches: |
|
||||||
- main |
|
||||||
- '[0-9]+.x' |
|
||||||
pull_request: |
|
||||||
branches: |
|
||||||
- main |
|
||||||
- '[0-9]+.x' |
|
||||||
workflow_dispatch: |
|
||||||
|
|
||||||
jobs: |
|
||||||
check_clang_format: |
|
||||||
runs-on: ubuntu-20-large |
|
||||||
steps: |
|
||||||
- uses: actions/checkout@v2 |
|
||||||
- name: Run ClangFormat |
|
||||||
run: find . | grep -E '\.(c|h|cc)$' | grep -E -v '^./(third_party|cmake)' | xargs clang-format -i |
|
||||||
- name: Check for differences |
|
||||||
run: git diff --exit-code |
|
@ -1,24 +0,0 @@ |
|||||||
name: Generate Files |
|
||||||
|
|
||||||
# After any push to the main branch, re-generate pregenerated files. |
|
||||||
on: |
|
||||||
push: |
|
||||||
branches: |
|
||||||
- main |
|
||||||
- '[0-9]+.x' |
|
||||||
|
|
||||||
jobs: |
|
||||||
generate: |
|
||||||
if: github.repository == 'protocolbuffers/upb' |
|
||||||
runs-on: ubuntu-22-large |
|
||||||
|
|
||||||
steps: |
|
||||||
- uses: actions/checkout@v3 |
|
||||||
with: |
|
||||||
# Note: this token has an expiration date, so if the workflow starts |
|
||||||
# failing then you may need to generate a fresh token. |
|
||||||
token: ${{ secrets.BOT_ACCESS_TOKEN }} |
|
||||||
- name: Configure name and email address in Git |
|
||||||
run: cd ${{ github.workspace }} && git config user.name "Protobuf Team Bot" && git config user.email "protobuf-team-bot@google.com" |
|
||||||
- name: Commit and push update |
|
||||||
run: cd ${{ github.workspace }} && ./cmake/push_auto_update.sh |
|
@ -1,15 +0,0 @@ |
|||||||
mergeable: |
|
||||||
pull_requests: |
|
||||||
label: |
|
||||||
and: |
|
||||||
- must_exclude: |
|
||||||
regex: '^disposition/DO NOT MERGE' |
|
||||||
message: 'Pull request marked not mergeable' |
|
||||||
- must_include: |
|
||||||
regex: 'mergeable:force-allow' |
|
||||||
message: 'Pull requests should not be merged directly and should instead |
|
||||||
be handled by Copybara. |
|
||||||
|
|
||||||
To enable Github merges, add the `mergeable:force-allow` label and get a second |
|
||||||
approval. This should almost never be used except for releases or as a break glass |
|
||||||
measure after discussing with the team.' |
|
@ -1,173 +0,0 @@ |
|||||||
name: Python Tests |
|
||||||
|
|
||||||
on: |
|
||||||
push: |
|
||||||
branches: |
|
||||||
- main |
|
||||||
- '[0-9]+.x' |
|
||||||
pull_request: |
|
||||||
branches: |
|
||||||
- main |
|
||||||
- '[0-9]+.x' |
|
||||||
workflow_dispatch: |
|
||||||
|
|
||||||
jobs: |
|
||||||
build_wheels: |
|
||||||
name: Build Wheels |
|
||||||
runs-on: ubuntu-large |
|
||||||
if: ${{ github.event.pull_request.head.repo.full_name == 'protocolbuffers/upb' }} |
|
||||||
env: |
|
||||||
# Bazel 5.4.0. Once we have moved to toolchains, we can update to Bazel 6.x. |
|
||||||
DOCKER_IMAGE: us-docker.pkg.dev/protobuf-build/release-containers/linux/apple@sha256:bb1d14738449916d489c1cbb062508c4dca5bd265ea3e67a2628ae40912b9b00 |
|
||||||
|
|
||||||
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 |
|
||||||
- name: Use gcloud CLI |
|
||||||
run: gcloud info |
|
||||||
- name: Configure Docker |
|
||||||
run: gcloud auth configure-docker -q us-docker.pkg.dev |
|
||||||
- name: Pull Docker Image |
|
||||||
run: docker pull $DOCKER_IMAGE |
|
||||||
- name: Check Bazel version |
|
||||||
run: cd ${{ github.workspace }} && docker run -v$PWD:/workspace $DOCKER_IMAGE --version |
|
||||||
- id: bazel-cache |
|
||||||
name: Set up Bazel caching |
|
||||||
uses: ./.github/actions/setup-bazel-cache |
|
||||||
- name: Build Wheels |
|
||||||
run: cd ${{ github.workspace }} && docker run -e GOOGLE_APPLICATION_CREDENTIALS=/workspace/$(basename $GOOGLE_APPLICATION_CREDENTIALS) -v$PWD:/workspace $DOCKER_IMAGE build $BAZEL_CACHE --crosstool_top=@com_google_protobuf//toolchain:clang_suite --@com_google_protobuf//toolchain:release=true --symlink_prefix=/ -c dbg python/dist ${{ steps.bazel-cache.outputs.cache_args }} python/dist:test_wheel python/dist:source_wheel |
|
||||||
- name: Move Wheels |
|
||||||
run: mkdir wheels && find _build/out \( -name 'protobuf*.whl' -o -name 'protobuf-*.tar.gz' \) -exec mv '{}' wheels ';' |
|
||||||
- uses: actions/upload-artifact@v3 |
|
||||||
with: |
|
||||||
name: python-wheels |
|
||||||
path: wheels/ |
|
||||||
- uses: actions/upload-artifact@v3 |
|
||||||
with: |
|
||||||
name: requirements |
|
||||||
# Tests shouldn't have access to the whole upb repo, upload the one file we need |
|
||||||
path: python/requirements.txt |
|
||||||
|
|
||||||
test_wheels: |
|
||||||
name: Test Wheels |
|
||||||
needs: build_wheels |
|
||||||
strategy: |
|
||||||
fail-fast: false # Don't cancel all jobs if one fails. |
|
||||||
matrix: |
|
||||||
include: |
|
||||||
# Linux and Mac use the limited API, so all Python versions will use a single wheel. |
|
||||||
# As a result we can just test the oldest and newest supported Python versions and assume |
|
||||||
# this gives us sufficient test coverage. |
|
||||||
- { os: ubuntu-18-large, python-version: "3.7", architecture: x64, type: 'binary' } |
|
||||||
- { os: macos-11, python-version: "3.7", architecture: x64, type: 'binary' } |
|
||||||
- { os: ubuntu-20-large, python-version: "3.10", architecture: x64, type: 'binary' } |
|
||||||
- { os: macos-12, python-version: "3.10", architecture: x64, type: 'binary' } |
|
||||||
- { os: ubuntu-18-large, python-version: "3.7", architecture: x64, type: 'source' } |
|
||||||
- { os: macos-11, python-version: "3.7", architecture: x64, type: 'source' } |
|
||||||
- { os: ubuntu-20-large, python-version: "3.10", architecture: x64, type: 'source' } |
|
||||||
- { os: macos-12, python-version: "3.10", architecture: x64, type: 'source' } |
|
||||||
|
|
||||||
# Windows uses the full API up until Python 3.10, so each of these |
|
||||||
# jobs tests a distinct binary wheel. |
|
||||||
- { os: windows-2019-large, python-version: "3.7", architecture: x86, type: 'binary' } |
|
||||||
- { os: windows-2019-large, python-version: "3.8", architecture: x86, type: 'binary' } |
|
||||||
- { os: windows-2019-large, python-version: "3.9", architecture: x86, type: 'binary' } |
|
||||||
- { os: windows-2019-large, python-version: "3.10", architecture: x86, type: 'binary' } |
|
||||||
- { os: windows-2019-large, python-version: "3.7", architecture: x64, type: 'binary' } |
|
||||||
- { os: windows-2019-large, python-version: "3.8", architecture: x64, type: 'binary' } |
|
||||||
- { os: windows-2019-large, python-version: "3.9", architecture: x64, type: 'binary' } |
|
||||||
- { os: windows-2019-large, python-version: "3.10", architecture: x64, type: 'binary' } |
|
||||||
runs-on: ${{ matrix.os }} |
|
||||||
defaults: |
|
||||||
run: |
|
||||||
shell: bash |
|
||||||
steps: |
|
||||||
- name: Download Wheels |
|
||||||
uses: actions/download-artifact@v3 |
|
||||||
with: |
|
||||||
name: python-wheels |
|
||||||
path: wheels |
|
||||||
- name: Download Requirements |
|
||||||
uses: actions/download-artifact@v3 |
|
||||||
with: |
|
||||||
name: requirements |
|
||||||
path: requirements |
|
||||||
- uses: actions/setup-python@v2 |
|
||||||
with: |
|
||||||
python-version: ${{ matrix.python-version }} |
|
||||||
architecture: ${{ matrix.architecture }} |
|
||||||
- name: Setup Python venv |
|
||||||
run: | |
|
||||||
python -m pip install --upgrade pip |
|
||||||
python -m venv env |
|
||||||
# Windows uses 'Scripts' instead of 'bin' |
|
||||||
source env/bin/activate || source env/Scripts/activate |
|
||||||
echo "VIRTUAL ENV:" $VIRTUAL_ENV |
|
||||||
- name: Install tzdata |
|
||||||
run: pip install tzdata |
|
||||||
# Only needed on Windows, Linux ships with tzdata. |
|
||||||
if: ${{ contains(matrix.os, 'windows') }} |
|
||||||
- name: Install requirements |
|
||||||
run: pip install -r requirements/requirements.txt |
|
||||||
- name: Install Protobuf Binary Wheel |
|
||||||
run: pip install -vvv --no-index --find-links wheels protobuf |
|
||||||
if: ${{ matrix.type == 'binary' }} |
|
||||||
- name: Install Protobuf Source Wheel |
|
||||||
run: | |
|
||||||
cd wheels |
|
||||||
tar -xzvf *.tar.gz |
|
||||||
cd protobuf-*/ |
|
||||||
pip install . |
|
||||||
if: ${{ matrix.type == 'source' }} |
|
||||||
- name: Test that module is importable |
|
||||||
run: python -v -c 'from google._upb import _message; assert "google._upb._message.MessageMeta" in str(_message.MessageMeta)' |
|
||||||
if: ${{ !matrix.pure_python }} |
|
||||||
- name: Install Protobuf Test Wheel |
|
||||||
run: pip install -vvv --no-index --find-links wheels protobuftests |
|
||||||
- name: Run the unit tests |
|
||||||
run: | |
|
||||||
TESTS=$(pip show -f protobuftests | grep pb_unit_tests.*py$ | sed 's,/,.,g' | sed 's,\\,.,g' | sed -E 's,.py$,,g') |
|
||||||
for test in $TESTS; do |
|
||||||
python -m unittest -v $test |
|
||||||
done |
|
||||||
|
|
||||||
test_pure_python_wheels: |
|
||||||
name: Test Pure Python Wheels |
|
||||||
needs: build_wheels |
|
||||||
strategy: |
|
||||||
fail-fast: false # Don't cancel all jobs if one fails. |
|
||||||
matrix: |
|
||||||
python-version: ["3.7", "3.10"] |
|
||||||
runs-on: ubuntu-large |
|
||||||
|
|
||||||
steps: |
|
||||||
- name: Download Wheels |
|
||||||
uses: actions/download-artifact@v3 |
|
||||||
with: |
|
||||||
name: python-wheels |
|
||||||
path: wheels |
|
||||||
- name: Delete Binary Wheels |
|
||||||
run: find wheels -type f | grep -v none-any | xargs rm |
|
||||||
- uses: actions/setup-python@v2 |
|
||||||
with: |
|
||||||
python-version: ${{ matrix.python-version }} |
|
||||||
- name: Setup Python venv |
|
||||||
run: | |
|
||||||
python -m pip install --upgrade pip |
|
||||||
python -m venv env |
|
||||||
source env/bin/activate |
|
||||||
echo "VIRTUAL ENV:" $VIRTUAL_ENV |
|
||||||
- name: Install numpy |
|
||||||
run: pip install numpy |
|
||||||
- name: Install Protobuf Wheels |
|
||||||
run: pip install -vvv --no-index --find-links wheels protobuf protobuftests |
|
||||||
- name: Run the unit tests |
|
||||||
run: | |
|
||||||
TESTS=$(pip show -f protobuftests | grep _test.py | sed 's,/,.,g' | sed -E 's,.py$,,g') |
|
||||||
for test in $TESTS; do |
|
||||||
python -m unittest -v $test |
|
||||||
done |
|
Loading…
Reference in new issue