1818 ubuntu-latest,
1919 ubuntu-arm,
2020 alpine-latest,
21+ alpine-arm,
2122 macos-intel,
2223 macos-arm,
2324 windows-latest,
4445 container : mcr.microsoft.com/dotnet/sdk:10.0-alpine
4546 protobuf-url : https://github.com/protocolbuffers/protobuf/releases/download/v22.3/protoc-22.3-linux-x86_64.zip
4647 runsOn : ubuntu-latest
48+ - os : alpine-arm
49+ out-file : libtemporalio_sdk_core_c_bridge.so
50+ out-prefix : linux-musl-arm64
51+ # Need Alpine container since GH runner doesn't have one
52+ container : mcr.microsoft.com/dotnet/sdk:10.0-alpine
53+ protobuf-url : https://github.com/protocolbuffers/protobuf/releases/download/v22.3/protoc-22.3-linux-aarch_64.zip
54+ runsOn : ubuntu-24.04-arm64-2-core
4755 - os : macos-intel
4856 out-file : libtemporalio_sdk_core_c_bridge.dylib
4957 out-prefix : osx-x64
92100 run : cargo build --manifest-path src/Temporalio/Bridge/sdk-core/crates/sdk-core-c-bridge/Cargo.toml --profile release-lto
93101
94102 - name : Build (Docker non-Alpine)
95- if : ${{ matrix.container && matrix.os != 'alpine-latest' }}
103+ if : ${{ matrix.container && matrix.os != 'alpine-latest' && matrix.os != 'alpine-arm' }}
96104 run : |
97105 docker run --rm -v "$(pwd):/workspace" -w /workspace \
98106 ${{ matrix.container }} \
@@ -106,7 +114,7 @@ jobs:
106114 '
107115
108116 - name : Build (Docker Alpine)
109- if : ${{ matrix.container && matrix.os == 'alpine-latest' }}
117+ if : ${{ matrix.container && ( matrix.os == 'alpine-latest' || matrix.os == 'alpine-arm') }}
110118 run : |
111119 docker run --rm -v "$(pwd):/workspace" -w /workspace \
112120 ${{ matrix.container }} \
@@ -175,6 +183,7 @@ jobs:
175183 ubuntu-latest,
176184 ubuntu-arm,
177185 alpine-latest,
186+ alpine-arm,
178187 macos-intel,
179188 macos-arm,
180189 windows-latest,
@@ -184,16 +193,17 @@ jobs:
184193 - os : ubuntu-arm
185194 runsOn : ubuntu-24.04-arm64-2-core
186195 - os : alpine-latest
187- container : mcr.microsoft.com/dotnet/sdk:10.0-alpine
188196 runsOn : ubuntu-latest
197+ - os : alpine-arm
198+ # Run in Docker manually to avoid JS action limitations on ARM64
199+ runsOn : ubuntu-24.04-arm64-2-core
189200 - os : macos-intel
190201 runsOn : macos-15-intel
191202 - os : macos-arm
192203 runsOn : macos-14
193204 - os : windows-arm
194205 runsOn : windows-11-arm
195206 runs-on : ${{ matrix.runsOn || matrix.os }}
196- container : ${{ matrix.container }}
197207 steps :
198208 - name : Checkout repository
199209 uses : actions/checkout@v4
@@ -208,20 +218,31 @@ jobs:
208218
209219 - name : Setup .NET (non-Alpine)
210220 uses : actions/setup-dotnet@v4
211- if : ${{ matrix.os != 'alpine-latest' }}
221+ if : ${{ !contains( matrix.os, 'alpine') }}
212222 with :
213223 # Specific .NET version required because GitHub macos ARM image has
214224 # bad pre-installed .NET version
215225 dotnet-version : 10.x
216226
217- - name : Run smoke test (non-Windows)
218- if : ${{ matrix.os != 'windows-latest' && matrix.os != 'windows-arm' }}
227+ - name : Run smoke test (Alpine)
228+ if : ${{ contains(matrix.os, 'alpine') }}
229+ # Use Docker specifically for Alpine ARM 64 to avoid JS action limitations
230+ run : |
231+ docker run --rm -v "$(pwd):/workspace" -w /workspace \
232+ mcr.microsoft.com/dotnet/sdk:10.0-alpine \
233+ sh -c ' \
234+ dotnet add tests/Temporalio.SmokeTest package Temporalio -s "/workspace/nuget-package/Temporalio/bin/Release;https://api.nuget.org/v3/index.json" --prerelease \
235+ && dotnet run --project tests/Temporalio.SmokeTest \
236+ '
237+
238+ - name : Run smoke test (Linux/macOS)
239+ if : ${{ !contains(matrix.os, 'alpine') && !contains(matrix.os, 'windows') }}
219240 run : |
220241 dotnet add tests/Temporalio.SmokeTest package Temporalio -s "$GITHUB_WORKSPACE/nuget-package/Temporalio/bin/Release;https://api.nuget.org/v3/index.json" --prerelease
221242 dotnet run --project tests/Temporalio.SmokeTest
222243
223244 - name : Run smoke test (Windows)
224- if : ${{ matrix.os == 'windows-latest' || matrix.os == 'windows-arm' }}
245+ if : ${{ contains( matrix.os, 'windows') }}
225246 run : |
226247 dotnet add tests/Temporalio.SmokeTest package Temporalio -s "$env:GITHUB_WORKSPACE/nuget-package/Temporalio/bin/Release;https://api.nuget.org/v3/index.json" --prerelease
227248 dotnet run --project tests/Temporalio.SmokeTest
0 commit comments