test_csharp_aarch64.sh 2.0 KB

1234567891011121314151617181920212223242526272829
  1. #!/bin/bash
  2. set -ex
  3. # go to the repo root
  4. cd $(dirname $0)/../../..
  5. if [[ -t 0 ]]; then
  6. DOCKER_TTY_ARGS="-it"
  7. else
  8. # The input device on kokoro is not a TTY, so -it does not work.
  9. DOCKER_TTY_ARGS=
  10. fi
  11. # First, build protobuf C# tests under x86_64 docker image
  12. # Tests are built "dotnet publish" because we want all the dependencies to the copied to the destination directory
  13. # (we want to avoid references to ~/.nuget that won't be available in the subsequent docker run)
  14. CSHARP_BUILD_COMMAND="dotnet publish -c Release -f net50 csharp/src/Google.Protobuf.Test/Google.Protobuf.Test.csproj"
  15. docker run $DOCKER_TTY_ARGS --rm --user "$(id -u):$(id -g)" -e "HOME=/home/fake-user" -e "DOTNET_CLI_TELEMETRY_OPTOUT=true" -e "DOTNET_SKIP_FIRST_TIME_EXPERIENCE=true" -v "$(mktemp -d):/home/fake-user" -v "$(pwd)":/work -w /work mcr.microsoft.com/dotnet/sdk:5.0.202-buster-slim bash -c "$CSHARP_BUILD_COMMAND"
  16. # Use an actual aarch64 docker image to run protobuf C# tests with an emulator. "dotnet vstest" allows
  17. # running tests from a pre-built project.
  18. # * mount the protobuf root as /work to be able to access the crosscompiled files
  19. # * to avoid running the process inside docker as root (which can pollute the workspace with files owned by root), we force
  20. # running under current user's UID and GID. To be able to do that, we need to provide a home directory for the user
  21. # otherwise the UID would be homeless under the docker container and pip install wouldn't work. For simplicity,
  22. # we just run map the user's home to a throwaway temporary directory
  23. CSHARP_TEST_COMMAND="dotnet vstest csharp/src/Google.Protobuf.Test/bin/Release/net50/publish/Google.Protobuf.Test.dll"
  24. docker run $DOCKER_TTY_ARGS --rm --user "$(id -u):$(id -g)" -e "HOME=/home/fake-user" -e "DOTNET_CLI_TELEMETRY_OPTOUT=true" -e "DOTNET_SKIP_FIRST_TIME_EXPERIENCE=true" -v "$(mktemp -d):/home/fake-user" -v "$(pwd)":/work -w /work mcr.microsoft.com/dotnet/sdk:5.0.202-buster-slim-arm64v8 bash -c "$CSHARP_TEST_COMMAND"