2323 type : string
2424 description : " The arguments passed to swift test in the macOS 5.10 Swift version matrix job."
2525 default : " "
26+ xcode_16_0_setup_command :
27+ type : string
28+ description : " The command(s) to be executed before all other work."
29+ default : " "
2630 xcode_16_1_enabled :
2731 type : boolean
2832 description : " Boolean to enable the Xcode version 16.1 jobs. Defaults to true."
3539 type : string
3640 description : " The arguments passed to swift test in the Xcode version 16.1 job."
3741 default : " "
42+ xcode_16_1_setup_command :
43+ type : string
44+ description : " The command(s) to be executed before all other work."
45+ default : " "
3846 xcode_16_2_enabled :
3947 type : boolean
4048 description : " Boolean to enable the Xcode version 16.2 jobs. Defaults to true."
4755 type : string
4856 description : " The arguments passed to swift test in the Xcode version 16.2 job."
4957 default : " "
58+ xcode_16_2_setup_command :
59+ type : string
60+ description : " The command(s) to be executed before all other work."
61+ default : " xcrun simctl runtime match set iphoneos18.2 22D8075 && xcrun simctl runtime match set xros2.2 22N895"
5062 xcode_16_3_enabled :
5163 type : boolean
5264 description : " Boolean to enable the Xcode version 16.3 jobs. Defaults to true."
5971 type : string
6072 description : " The arguments passed to swift test in the Xcode version 16.3 job."
6173 default : " "
74+ xcode_16_3_setup_command :
75+ type : string
76+ description : " The command(s) to be executed before all other work."
77+ default : " "
6278
6379 build_scheme :
6480 type : string
@@ -132,60 +148,70 @@ jobs:
132148 xcode_15_4_enabled="${MATRIX_MACOS_15_4_ENABLED:=true}"
133149 xcode_15_4_build_arguments_override="${MATRIX_MACOS_15_4_BUILD_ARGUMENTS_OVERRIDE:=""}"
134150 xcode_15_4_test_arguments_override="${MATRIX_MACOS_15_4_TEST_ARGUMENTS_OVERRIDE:=""}"
151+ xcode_15_4_setup_command="${MATRIX_MACOS_15_4_SETUP_COMMAND:=""}"
135152 xcode_16_0_enabled="${MATRIX_MACOS_16_0_ENABLED:=true}"
136153 xcode_16_0_build_arguments_override="${MATRIX_MACOS_16_0_BUILD_ARGUMENTS_OVERRIDE:=""}"
137154 xcode_16_0_test_arguments_override="${MATRIX_MACOS_16_0_TEST_ARGUMENTS_OVERRIDE:=""}"
155+ xcode_16_0_setup_command="${MATRIX_MACOS_16_0_SETUP_COMMAND:=""}"
138156 xcode_16_1_enabled="${MATRIX_MACOS_16_1_ENABLED:=true}"
139157 xcode_16_1_build_arguments_override="${MATRIX_MACOS_16_1_BUILD_ARGUMENTS_OVERRIDE:=""}"
140158 xcode_16_1_test_arguments_override="${MATRIX_MACOS_16_1_TEST_ARGUMENTS_OVERRIDE:=""}"
159+ xcode_16_1_setup_command="${MATRIX_MACOS_16_1_SETUP_COMMAND:=""}"
141160 xcode_16_2_enabled="${MATRIX_MACOS_16_2_ENABLED:=true}"
142161 xcode_16_2_build_arguments_override="${MATRIX_MACOS_16_2_BUILD_ARGUMENTS_OVERRIDE:=""}"
143162 xcode_16_2_test_arguments_override="${MATRIX_MACOS_16_2_TEST_ARGUMENTS_OVERRIDE:=""}"
163+ xcode_16_2_setup_command="${MATRIX_MACOS_16_2_SETUP_COMMAND:=""}"
144164 xcode_16_3_enabled="${MATRIX_MACOS_16_3_ENABLED:=true}"
145165 xcode_16_3_build_arguments_override="${MATRIX_MACOS_16_3_BUILD_ARGUMENTS_OVERRIDE:=""}"
146166 xcode_16_3_test_arguments_override="${MATRIX_MACOS_16_3_TEST_ARGUMENTS_OVERRIDE:=""}"
167+ xcode_16_3_setup_command="${MATRIX_MACOS_16_3_SETUP_COMMAND:=""}"
147168
148169 # Create matrix from inputs
149170 matrix='{"config": []}'
150171
151172 if [[ "$xcode_15_4_enabled" == "true" ]]; then
152173 matrix=$(echo "$matrix" | jq -c \
174+ --arg setup_command "$xcode_15_4_setup_command" \
153175 --arg build_arguments_override "$xcode_15_4_build_arguments_override" \
154176 --arg test_arguments_override "$xcode_15_4_test_arguments_override" \
155177 --arg runner_pool "$runner_pool" \
156- '.config[.config| length] |= . + { "name": "Xcode 15.4", "xcode_version": "15.4", "build_arguments_override": $build_arguments_override, "test_arguments_override": $test_arguments_override, "os": "sequoia", "arch": "ARM64", "pool": $runner_pool }')
178+ '.config[.config| length] |= . + { "name": "Xcode 15.4", "xcode_version": "15.4", "setup_command": $setup_command, " build_arguments_override": $build_arguments_override, "test_arguments_override": $test_arguments_override, "os": "sequoia", "arch": "ARM64", "pool": $runner_pool }')
157179 fi
158180
159181 if [[ "$xcode_16_0_enabled" == "true" ]]; then
160182 matrix=$(echo "$matrix" | jq -c \
183+ --arg setup_command "$xcode_16_0_setup_command" \
161184 --arg build_arguments_override "$xcode_16_0_build_arguments_override" \
162185 --arg test_arguments_override "$xcode_16_0_test_arguments_override" \
163186 --arg runner_pool "$runner_pool" \
164- '.config[.config| length] |= . + { "name": "Xcode 16.0", "xcode_version": "16.0", "build_arguments_override": $build_arguments_override, "test_arguments_override": $test_arguments_override, "os": "sequoia", "arch": "ARM64", "pool": $runner_pool }')
187+ '.config[.config| length] |= . + { "name": "Xcode 16.0", "xcode_version": "16.0", "setup_command": $setup_command, " build_arguments_override": $build_arguments_override, "test_arguments_override": $test_arguments_override, "os": "sequoia", "arch": "ARM64", "pool": $runner_pool }')
165188 fi
166189
167190 if [[ "$xcode_16_1_enabled" == "true" ]]; then
168191 matrix=$(echo "$matrix" | jq -c \
192+ --arg setup_command "$xcode_16_1_setup_command" \
169193 --arg build_arguments_override "$xcode_16_1_build_arguments_override" \
170194 --arg test_arguments_override "$xcode_16_1_test_arguments_override" \
171195 --arg runner_pool "$runner_pool" \
172- '.config[.config| length] |= . + { "name": "Xcode 16.1", "xcode_version": "16.1", "build_arguments_override": $build_arguments_override, "test_arguments_override": $test_arguments_override, "os": "sequoia", "arch": "ARM64", "pool": $runner_pool }')
196+ '.config[.config| length] |= . + { "name": "Xcode 16.1", "xcode_version": "16.1", "setup_command": $setup_command, " build_arguments_override": $build_arguments_override, "test_arguments_override": $test_arguments_override, "os": "sequoia", "arch": "ARM64", "pool": $runner_pool }')
173197 fi
174198
175199 if [[ "$xcode_16_2_enabled" == "true" ]]; then
176200 matrix=$(echo "$matrix" | jq -c \
201+ --arg setup_command "$xcode_16_2_setup_command" \
177202 --arg build_arguments_override "$xcode_16_2_build_arguments_override" \
178203 --arg test_arguments_override "$xcode_16_2_test_arguments_override" \
179204 --arg runner_pool "$runner_pool" \
180- '.config[.config| length] |= . + { "name": "Xcode 16.2", "xcode_version": "16.2", "build_arguments_override": $build_arguments_override, "test_arguments_override": $test_arguments_override, "os": "sequoia", "arch": "ARM64", "pool": $runner_pool }')
205+ '.config[.config| length] |= . + { "name": "Xcode 16.2", "xcode_version": "16.2", "setup_command": $setup_command, " build_arguments_override": $build_arguments_override, "test_arguments_override": $test_arguments_override, "os": "sequoia", "arch": "ARM64", "pool": $runner_pool }')
181206 fi
182207
183208 if [[ "$xcode_16_3_enabled" == "true" ]]; then
184209 matrix=$(echo "$matrix" | jq -c \
210+ --arg setup_command "$xcode_16_3_setup_command" \
185211 --arg build_arguments_override "$xcode_16_3_build_arguments_override" \
186212 --arg test_arguments_override "$xcode_16_3_test_arguments_override" \
187213 --arg runner_pool "$runner_pool" \
188- '.config[.config| length] |= . + { "name": "Xcode 16.3", "xcode_version": "16.3", "build_arguments_override": $build_arguments_override, "test_arguments_override": $test_arguments_override, "os": "sequoia", "arch": "ARM64", "pool": $runner_pool }')
214+ '.config[.config| length] |= . + { "name": "Xcode 16.3", "xcode_version": "16.3", "setup_command": $setup_command, " build_arguments_override": $build_arguments_override, "test_arguments_override": $test_arguments_override, "os": "sequoia", "arch": "ARM64", "pool": $runner_pool }')
189215 fi
190216
191217 echo "$matrix" | jq -c
@@ -196,18 +222,23 @@ jobs:
196222 MATRIX_MACOS_15_4_ENABLED : ${{ inputs.xcode_15_4_enabled }}
197223 MATRIX_MACOS_15_4_BUILD_ARGUMENTS_OVERRIDE : ${{ inputs.xcode_15_4_build_arguments_override }}
198224 MATRIX_MACOS_15_4_TEST_ARGUMENTS_OVERRIDE : ${{ inputs.xcode_15_4_test_arguments_override }}
225+ MATRIX_MACOS_15_4_SETUP_COMMAND : ${{ inputs.xcode_15_4_setup_command }}
199226 MATRIX_MACOS_16_0_ENABLED : ${{ inputs.xcode_16_0_enabled }}
200227 MATRIX_MACOS_16_0_BUILD_ARGUMENTS_OVERRIDE : ${{ inputs.xcode_16_0_build_arguments_override }}
201228 MATRIX_MACOS_16_0_TEST_ARGUMENTS_OVERRIDE : ${{ inputs.xcode_16_0_test_arguments_override }}
229+ MATRIX_MACOS_16_0_SETUP_COMMAND : ${{ inputs.xcode_16_0_setup_command }}
202230 MATRIX_MACOS_16_1_ENABLED : ${{ inputs.xcode_16_1_enabled }}
203231 MATRIX_MACOS_16_1_BUILD_ARGUMENTS_OVERRIDE : ${{ inputs.xcode_16_1_build_arguments_override }}
204232 MATRIX_MACOS_16_1_TEST_ARGUMENTS_OVERRIDE : ${{ inputs.xcode_16_1_test_arguments_override }}
233+ MATRIX_MACOS_16_1_SETUP_COMMAND : ${{ inputs.xcode_16_1_setup_command }}
205234 MATRIX_MACOS_16_2_ENABLED : ${{ inputs.xcode_16_2_enabled }}
206235 MATRIX_MACOS_16_2_BUILD_ARGUMENTS_OVERRIDE : ${{ inputs.xcode_16_2_build_arguments_override }}
207236 MATRIX_MACOS_16_2_TEST_ARGUMENTS_OVERRIDE : ${{ inputs.xcode_16_2_test_arguments_override }}
237+ MATRIX_MACOS_16_2_SETUP_COMMAND : ${{ inputs.xcode_16_2_setup_command }}
208238 MATRIX_MACOS_16_3_ENABLED : ${{ inputs.xcode_16_3_enabled }}
209239 MATRIX_MACOS_16_3_BUILD_ARGUMENTS_OVERRIDE : ${{ inputs.xcode_16_3_build_arguments_override }}
210240 MATRIX_MACOS_16_3_TEST_ARGUMENTS_OVERRIDE : ${{ inputs.xcode_16_3_test_arguments_override }}
241+ MATRIX_MACOS_16_3_SETUP_COMMAND : ${{ inputs.xcode_16_3_setup_command }}
211242
212243 darwin-job :
213244 name : ${{ matrix.config.name }}
@@ -222,6 +253,11 @@ jobs:
222253 with :
223254 persist-credentials : false
224255 submodules : true
256+ - name : Setup command
257+ run : |
258+ if [ -n "${{ matrix.config.setup_command }}" ]; then
259+ bash -c "${{ matrix.config.setup_command }}"
260+ fi
225261 - name : Swift build
226262 run : |
227263 if [ -n "${{ matrix.config.build_arguments_override }}" ]; then
0 commit comments