enable edition flags for php #2
Workflow file for this run
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: 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: | |
linux: | |
name: Linux | |
runs-on: ubuntu-latest | |
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:3.1.415-6.0.100-66964dc8b07b6d1fc73a5cc14e59e84c1c534cea | |
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 | |
- name: Run conformance tests | |
uses: protocolbuffers/protobuf-ci/bazel-docker@v3 | |
with: | |
image: us-docker.pkg.dev/protobuf-build/containers/test/linux/csharp:3.1.415-6.0.100-66964dc8b07b6d1fc73a5cc14e59e84c1c534cea | |
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' |