[AZ-1132] Use system protoc in run-tests SDK container
ci/woodpecker/push/02-build-push/2 Pipeline is pending
ci/woodpecker/push/01-test Pipeline was successful
ci/woodpecker/push/02-build-push/1 Pipeline was successful

Install protobuf-compiler and set PROTOBUF_PROTOC on arm64
where Grpc.Tools bundled protoc segfaults; align Woodpecker.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Oleksandr Bezdieniezhnykh
2026-06-26 17:16:02 +03:00
parent b3e5a66799
commit 24b8aa3076
4 changed files with 21 additions and 10 deletions
+2
View File
@@ -12,5 +12,7 @@ steps:
- name: unit-tests - name: unit-tests
image: mcr.microsoft.com/dotnet/sdk:10.0 image: mcr.microsoft.com/dotnet/sdk:10.0
commands: commands:
- apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends protobuf-compiler && rm -rf /var/lib/apt/lists/*
- export PROTOBUF_PROTOC=/usr/bin/protoc
- dotnet restore SatelliteProvider.sln - dotnet restore SatelliteProvider.sln
- dotnet test SatelliteProvider.Tests/SatelliteProvider.Tests.csproj --no-restore --configuration Release --logger "console;verbosity=normal" --logger "trx;LogFileName=test-results.trx" --results-directory /app/test-results - dotnet test SatelliteProvider.Tests/SatelliteProvider.Tests.csproj --no-restore --configuration Release --logger "console;verbosity=normal" --logger "trx;LogFileName=test-results.trx" --results-directory /app/test-results
@@ -9,7 +9,7 @@
| Task | Status | Files Modified | Tests | AC Coverage | Issues | | Task | Status | Files Modified | Tests | AC Coverage | Issues |
|------|--------|---------------|-------|-------------|--------| |------|--------|---------------|-------|-------------|--------|
| AZ-1132 | Done | 5 files | Validator unit: 144/144 PASS (host) | 5/5 ACs covered | Docker `protoc` segfault blocks `./scripts/run-tests.sh` on this host — Step 11 gate | | AZ-1132 | Done | 5 files | Full suite PASS (`run-tests.sh`, 457 unit + integration) | 5/5 ACs covered | None |
## AC Test Coverage ## AC Test Coverage
+5 -5
View File
@@ -2,12 +2,12 @@
## Current Step ## Current Step
flow: existing-code flow: existing-code
step: 10 step: 11
name: Implement name: Run Tests
status: in_progress status: completed
sub_step: sub_step:
phase: 1 phase: 0
name: parse name: awaiting-invocation
detail: "" detail: ""
retry_count: 0 retry_count: 0
cycle: 15 cycle: 15
+13 -4
View File
@@ -63,6 +63,17 @@ EOF
} }
ensure_dev_cert ensure_dev_cert
# Grpc.Tools' bundled linux_arm64/protoc segfaults inside the stock sdk image;
# match Api/IntegrationTests Dockerfiles (see environment.md).
sdk_container_sh() {
docker run --rm -v "$PROJECT_ROOT:/src" -w /src mcr.microsoft.com/dotnet/sdk:10.0 \
sh -c 'apt-get update -qq \
&& DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends protobuf-compiler \
&& rm -rf /var/lib/apt/lists/* \
&& export PROTOBUF_PROTOC=/usr/bin/protoc \
&& '"$1"
}
usage() { usage() {
cat <<EOF cat <<EOF
Usage: $(basename "$0") [--unit-only | --smoke | --full] [--skip-format] [--keep-state] Usage: $(basename "$0") [--unit-only | --smoke | --full] [--skip-format] [--keep-state]
@@ -131,8 +142,7 @@ fi
if [[ "$mode" == "unit" ]]; then if [[ "$mode" == "unit" ]]; then
echo "Running unit tests only..." echo "Running unit tests only..."
docker run --rm -v "$PROJECT_ROOT:/src" -w /src mcr.microsoft.com/dotnet/sdk:10.0 \ sdk_container_sh "dotnet restore SatelliteProvider.sln && dotnet test SatelliteProvider.Tests/SatelliteProvider.Tests.csproj --no-restore --configuration Release --collect:'XPlat Code Coverage' --results-directory /src/TestResults --logger 'console;verbosity=normal'"
sh -c "dotnet restore SatelliteProvider.sln && dotnet test SatelliteProvider.Tests/SatelliteProvider.Tests.csproj --no-restore --configuration Release --collect:'XPlat Code Coverage' --results-directory /src/TestResults --logger 'console;verbosity=normal'"
echo "" echo ""
echo "=== Unit tests complete (coverage written to ./TestResults/) ===" echo "=== Unit tests complete (coverage written to ./TestResults/) ==="
exit 0 exit 0
@@ -174,8 +184,7 @@ export JWT_ISSUER
export JWT_AUDIENCE export JWT_AUDIENCE
echo "Step 1: Unit tests" echo "Step 1: Unit tests"
docker run --rm -v "$PROJECT_ROOT:/src" -w /src mcr.microsoft.com/dotnet/sdk:10.0 \ sdk_container_sh "dotnet restore SatelliteProvider.sln && dotnet test SatelliteProvider.Tests/SatelliteProvider.Tests.csproj --no-restore --configuration Release --collect:'XPlat Code Coverage' --results-directory /src/TestResults --logger 'console;verbosity=normal'"
sh -c "dotnet restore SatelliteProvider.sln && dotnet test SatelliteProvider.Tests/SatelliteProvider.Tests.csproj --no-restore --configuration Release --collect:'XPlat Code Coverage' --results-directory /src/TestResults --logger 'console;verbosity=normal'"
echo "" echo ""
echo "Step 2: Integration tests (Docker Compose, mode=$mode, keep_state=$keep_state)" echo "Step 2: Integration tests (Docker Compose, mode=$mode, keep_state=$keep_state)"