mirror of
https://github.com/protocolbuffers/protobuf
synced 2026-08-26 02:23:14 -04:00
This change updates the target frameworks for various C# projects within Protobuf to .NET 8.0, while also maintaining netstandard2.0 for the core library. Support for older frameworks like net45, net50, and netstandard1.1 has been removed. This updates our project to match our support policy in https://github.com/google/oss-policies-info/blob/main/foundational-dotnet-support-matrix.md which actually dropped support for net45, net50, etc long ago. PiperOrigin-RevId: 919111969
112 lines
4.6 KiB
YAML
112 lines
4.6 KiB
YAML
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@v5
|
|
with:
|
|
ref: ${{ inputs.safe-checkout }}
|
|
|
|
# TODO Run this with Bazel once codegen is handled properly.
|
|
- name: Run tests
|
|
uses: protocolbuffers/protobuf-ci/docker@v5
|
|
with:
|
|
image: us-docker.pkg.dev/protobuf-build/containers/test/linux/csharp:9.0.0-3.1.415-8.0.100-05b57cb3d33f45f689c1dace146b6b9619d78872
|
|
credentials: ${{ secrets.GAR_SERVICE_ACCOUNT }}
|
|
entrypoint: /bin/bash
|
|
command: >-
|
|
-cex "
|
|
cd csharp &&
|
|
dotnet restore src/Google.Protobuf.sln &&
|
|
dotnet build -c Release src/Google.Protobuf.sln &&
|
|
dotnet test -c Release -f net8.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@v5
|
|
with:
|
|
image: us-docker.pkg.dev/protobuf-build/containers/test/linux/csharp:9.0.0-3.1.415-8.0.100-05b57cb3d33f45f689c1dace146b6b9619d78872
|
|
credentials: ${{ secrets.GAR_SERVICE_ACCOUNT }}
|
|
bazel-cache: csharp_linux
|
|
bazel: test //csharp:conformance_test --action_env=PATH --action_env=DOTNET_CLI_TELEMETRY_OPTOUT=1 --test_env=DOTNET_CLI_HOME=/home/bazel
|
|
|
|
windows:
|
|
name: Windows
|
|
runs-on: windows-2022
|
|
steps:
|
|
- name: Checkout pending changes
|
|
uses: protocolbuffers/protobuf-ci/checkout@v5
|
|
with:
|
|
ref: ${{ inputs.safe-checkout }}
|
|
|
|
- name: Setup dotnet
|
|
uses: actions/setup-dotnet@baa11fbfe1d6520db94683bd5c7a3818018e4309 # v5.1.0
|
|
with:
|
|
dotnet-version: '8.0.x'
|
|
|
|
- name: Run tests
|
|
uses: protocolbuffers/protobuf-ci/bash@v5
|
|
with:
|
|
bazel-version: 9.0.0
|
|
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@v5
|
|
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@v5
|
|
with:
|
|
image: mcr.microsoft.com/dotnet/sdk:8.0.100-bookworm-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 net8.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@v5
|
|
with:
|
|
image: mcr.microsoft.com/dotnet/sdk:8.0.100-bookworm-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/net8.0/publish/Google.Protobuf.Test.dll'
|