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.
120 lines
5.0 KiB
120 lines
5.0 KiB
name: C# Tests |
|
|
|
on: |
|
workflow_call: |
|
inputs: |
|
safe-checkout: |
|
required: true |
|
description: "The SHA key for the commit we want to run over" |
|
type: string |
|
|
|
permissions: |
|
contents: read |
|
|
|
jobs: |
|
# All C# jobs are currently run on presubmit |
|
# If you wish to add continuous-only jobs you will need to import test-type above |
|
linux: |
|
name: Linux |
|
runs-on: ubuntu-22-4core |
|
steps: |
|
- name: Checkout pending changes |
|
uses: protocolbuffers/protobuf-ci/checkout@v3 |
|
with: |
|
ref: ${{ inputs.safe-checkout }} |
|
|
|
# TODO Run this with Bazel once codegen is handled properly. |
|
- name: Run tests |
|
uses: protocolbuffers/protobuf-ci/docker@v3 |
|
with: |
|
image: us-docker.pkg.dev/protobuf-build/containers/test/linux/csharp:6.4.0-3.1.415-6.0.100-08714ed7a713068c8418003a2d95f423d4b1eac9 |
|
credentials: ${{ secrets.GAR_SERVICE_ACCOUNT }} |
|
entrypoint: /bin/bash |
|
command: >- |
|
-c " |
|
cd csharp && |
|
dotnet restore src/Google.Protobuf.sln && |
|
dotnet build -c Release src/Google.Protobuf.sln && |
|
dotnet test -c Release -f net6.0 src/Google.Protobuf.Test/Google.Protobuf.Test.csproj" |
|
|
|
- name: Clear bazel between docker instances |
|
run: sudo rm -rf _build .repository-cache |
|
|
|
- name: Run conformance tests |
|
uses: protocolbuffers/protobuf-ci/bazel-docker@v3 |
|
with: |
|
image: us-docker.pkg.dev/protobuf-build/containers/test/linux/csharp:6.4.0-3.1.415-6.0.100-08714ed7a713068c8418003a2d95f423d4b1eac9 |
|
credentials: ${{ secrets.GAR_SERVICE_ACCOUNT }} |
|
bazel-cache: csharp_linux |
|
bazel: test //csharp:conformance_test --action_env=DOTNET_CLI_TELEMETRY_OPTOUT=1 --test_env=DOTNET_CLI_HOME=/home/bazel |
|
|
|
windows: |
|
name: Windows |
|
runs-on: windows-2019 |
|
steps: |
|
- name: Checkout pending changes |
|
uses: protocolbuffers/protobuf-ci/checkout@v3 |
|
with: |
|
ref: ${{ inputs.safe-checkout }} |
|
|
|
- name: Setup dotnet |
|
uses: actions/setup-dotnet@3447fd6a9f9e57506b15f895c5b76d3b197dc7c2 # v3.2.0 |
|
with: |
|
dotnet-version: '6.0.x' |
|
|
|
# Workaround for incompatibility between gcloud and windows-2019 runners. |
|
- name: Install Python |
|
uses: actions/setup-python@61a6322f88396a6271a6ee3565807d608ecaddd1 # v4.7.0 |
|
with: |
|
python-version: '3.9' |
|
- name: Use custom python for gcloud |
|
run: echo "CLOUDSDK_PYTHON=${Python3_ROOT_DIR}\\python3" >> $GITHUB_ENV |
|
shell: bash |
|
|
|
- name: Run tests |
|
uses: protocolbuffers/protobuf-ci/bash@v3 |
|
with: |
|
credentials: ${{ secrets.GAR_SERVICE_ACCOUNT }} |
|
command: | |
|
dotnet build csharp/src/Google.Protobuf.sln |
|
dotnet test csharp/src/Google.Protobuf.Test/Google.Protobuf.Test.csproj |
|
|
|
linux-aarch64: |
|
name: Linux aarch64 |
|
runs-on: ubuntu-latest |
|
steps: |
|
- name: Checkout pending changes |
|
uses: protocolbuffers/protobuf-ci/checkout@v3 |
|
with: |
|
ref: ${{ inputs.safe-checkout }} |
|
|
|
- name: Build protobuf C# tests under x86_64 docker image |
|
# Tests are built "dotnet publish" because we want all the dependencies to the copied to the destination directory |
|
# (we want to avoid references to ~/.nuget that won't be available in the subsequent docker run) |
|
uses: protocolbuffers/protobuf-ci/docker@v3 |
|
with: |
|
image: mcr.microsoft.com/dotnet/sdk:6.0.100-bullseye-slim |
|
credentials: ${{ secrets.GAR_SERVICE_ACCOUNT }} |
|
command: >- |
|
/bin/bash -cex ' |
|
DOTNET_CLI_TELEMETRY_OPTOUT=true |
|
DOTNET_SKIP_FIRST_TIME_EXPERIENCE=true |
|
dotnet publish -c Release -f net6.0 /workspace/csharp/src/Google.Protobuf.Test/Google.Protobuf.Test.csproj' |
|
|
|
- name: Use an actual aarch64 docker image to run protobuf C# tests with an emulator |
|
# "dotnet vstest" allows running tests from a pre-built project. |
|
# * mount the protobuf root as /work to be able to access the crosscompiled files |
|
# * to avoid running the process inside docker as root (which can pollute the workspace with files owned by root), we force |
|
# running under current user's UID and GID. To be able to do that, we need to provide a home directory for the user |
|
# otherwise the UID would be homeless under the docker container and pip install wouldn't work. For simplicity, |
|
# we just run map the user's home to a throwaway temporary directory |
|
uses: protocolbuffers/protobuf-ci/docker@v3 |
|
with: |
|
image: mcr.microsoft.com/dotnet/sdk:6.0.100-bullseye-slim-arm64v8 |
|
skip-staleness-check: true |
|
credentials: ${{ secrets.GAR_SERVICE_ACCOUNT }} |
|
command: >- |
|
/bin/bash -cex ' |
|
DOTNET_CLI_TELEMETRY_OPTOUT=true |
|
DOTNET_SKIP_FIRST_TIME_EXPERIENCE=true |
|
dotnet vstest /workspace/csharp/src/Google.Protobuf.Test/bin/Release/net6.0/publish/Google.Protobuf.Test.dll'
|
|
|