@@ -194,17 +194,34 @@ jobs:
194194
195195 integration-test :
196196 needs : build
197- name : Integration test (${{ matrix.os }})
198- runs-on : ${{ matrix.os }}
197+ name : Integration test (${{ matrix.runner.container || matrix.runner.os }})
198+ runs-on : ${{ matrix.runner.os }}
199+ container : ${{ matrix.runner.container }}
199200
200201 strategy :
201202 fail-fast : false
202203 matrix :
203204 # Pin ubuntu to ensure mono is installed
204205 # Pin macos to get the version of Xcode that we need: https://github.com/actions/runner-images/issues/10703
205- os : [ubuntu-22.04, windows-latest, macos-15]
206+ runner : [
207+ {os: ubuntu-22.04},
208+ {os: ubuntu-latest, container: alpine:edge, target: Linux-musl},
209+ {os: windows-latest},
210+ {os: macos-15}
211+ ]
206212
207213 steps :
214+ - name : Install build dependencies for Alpine Linux
215+ if : ${{ startsWith(matrix.runner.container, 'alpine') }}
216+ run : |
217+ apk update
218+ apk add bash build-base cmake curl-dev git icu mono openjdk11 powershell sudo tar wget
219+ git config --global --add safe.directory $GITHUB_WORKSPACE
220+ # Grpc.Tools protoc is prebuilt with glibc (https://github.com/grpc/grpc/issues/24188#issuecomment-1403435551)
221+ apk add grpc-plugins
222+ echo "PROTOBUF_PROTOC=/usr/bin/protoc" >> $GITHUB_ENV
223+ echo "GRPC_PROTOC_PLUGIN=/usr/bin/grpc_csharp_plugin" >> $GITHUB_ENV
224+
208225 - uses : actions/checkout@v4
209226 with :
210227 # We only check out what is absolutely necessary to reduce a chance of local files impacting
@@ -221,7 +238,7 @@ jobs:
221238 path : src
222239
223240 - name : Install build dependencies
224- if : runner.os == 'Linux'
241+ if : runner.os == 'Linux' && !matrix.runner.container
225242 run : |
226243 sudo apt update
227244 sudo apt install libcurl4-openssl-dev
0 commit comments