60
60
id : jobs
61
61
job :
62
62
name : ${{ matrix.name }}
63
- needs : [ calculate_matrix ]
63
+ needs : [calculate_matrix]
64
64
runs-on : " ${{ matrix.os }}"
65
65
defaults :
66
66
run :
@@ -116,6 +116,26 @@ jobs:
116
116
# minutes (and potentially removes important packages).
117
117
large-packages : false
118
118
119
+ - if : contains(matrix.os, 'windows')
120
+ uses : samypr100/setup-dev-drive@1d65529cfd809844a9e91e400a560294b6820a68
121
+ with :
122
+ # use as much space as is sensible, upper github limits are 14gb and 300gb
123
+ drive-size : ${{ matrix.os == 'windows-2022' && '12gb' || '100gb' }}
124
+ # pre-allocate the space to avoid out of disk errors and improve long-running performance
125
+ drive-type : Fixed
126
+ # copy the git clone into the dev drive
127
+ workspace-copy : true
128
+ # ReFS may have issues with sym links
129
+ drive-format : NTFS
130
+
131
+ - if : contains(matrix.os, 'windows')
132
+ name : Delete non-dev drive checkout, to make sure we aren't using it still
133
+ run : rm -rf ${{ github.workspace }}
134
+
135
+ - if : ${{ !contains(matrix.os, 'windows') }}
136
+ name : Make sure DEV_DRIVE_WORKSPACE is populated with the workspace
137
+ run : echo "DEV_DRIVE_WORKSPACE=${{ github.workspace }}" >> $GITHUB_ENV
138
+
119
139
# Rust Log Analyzer can't currently detect the PR number of a GitHub
120
140
# Actions build on its own, so a hint in the log message is needed to
121
141
# point it in the right direction.
@@ -127,6 +147,7 @@ jobs:
127
147
128
148
- name : add extra environment variables
129
149
run : src/ci/scripts/setup-environment.sh
150
+ working-directory : ${{ env.DEV_DRIVE_WORKSPACE }}
130
151
env :
131
152
# Since it's not possible to merge `${{ matrix.env }}` with the other
132
153
# variables in `job.<name>.env`, the variables defined in the matrix
@@ -136,48 +157,63 @@ jobs:
136
157
137
158
- name : setup upstream remote
138
159
run : src/ci/scripts/setup-upstream-remote.sh
160
+ working-directory : ${{ env.DEV_DRIVE_WORKSPACE }}
139
161
140
162
- name : ensure the channel matches the target branch
141
163
run : src/ci/scripts/verify-channel.sh
164
+ working-directory : ${{ env.DEV_DRIVE_WORKSPACE }}
142
165
143
166
- name : collect CPU statistics
144
167
run : src/ci/scripts/collect-cpu-stats.sh
168
+ working-directory : ${{ env.DEV_DRIVE_WORKSPACE }}
145
169
146
170
- name : show the current environment
147
171
run : src/ci/scripts/dump-environment.sh
172
+ working-directory : ${{ env.DEV_DRIVE_WORKSPACE }}
148
173
149
174
- name : install awscli
150
175
run : src/ci/scripts/install-awscli.sh
176
+ working-directory : ${{ env.DEV_DRIVE_WORKSPACE }}
151
177
152
178
- name : install sccache
153
179
run : src/ci/scripts/install-sccache.sh
180
+ working-directory : ${{ env.DEV_DRIVE_WORKSPACE }}
154
181
155
182
- name : select Xcode
156
183
run : src/ci/scripts/select-xcode.sh
184
+ working-directory : ${{ env.DEV_DRIVE_WORKSPACE }}
157
185
158
186
- name : install clang
159
187
run : src/ci/scripts/install-clang.sh
188
+ working-directory : ${{ env.DEV_DRIVE_WORKSPACE }}
160
189
161
190
- name : install tidy
162
191
run : src/ci/scripts/install-tidy.sh
192
+ working-directory : ${{ env.DEV_DRIVE_WORKSPACE }}
163
193
164
194
- name : install WIX
165
195
run : src/ci/scripts/install-wix.sh
196
+ working-directory : ${{ env.DEV_DRIVE_WORKSPACE }}
166
197
167
198
- name : disable git crlf conversion
168
199
run : src/ci/scripts/disable-git-crlf-conversion.sh
200
+ working-directory : ${{ env.DEV_DRIVE_WORKSPACE }}
169
201
170
202
- name : checkout submodules
171
203
run : src/ci/scripts/checkout-submodules.sh
204
+ working-directory : ${{ env.DEV_DRIVE_WORKSPACE }}
172
205
173
206
- name : install MinGW
174
207
run : src/ci/scripts/install-mingw.sh
208
+ working-directory : ${{ env.DEV_DRIVE_WORKSPACE }}
175
209
176
210
- name : install ninja
177
211
run : src/ci/scripts/install-ninja.sh
212
+ working-directory : ${{ env.DEV_DRIVE_WORKSPACE }}
178
213
179
214
- name : enable ipv6 on Docker
180
215
run : src/ci/scripts/enable-docker-ipv6.sh
216
+ working-directory : ${{ env.DEV_DRIVE_WORKSPACE }}
181
217
182
218
# Disable automatic line ending conversion (again). On Windows, when we're
183
219
# installing dependencies, something switches the git configuration directory or
@@ -186,25 +222,31 @@ jobs:
186
222
# appropriate line endings.
187
223
- name : disable git crlf conversion
188
224
run : src/ci/scripts/disable-git-crlf-conversion.sh
225
+ working-directory : ${{ env.DEV_DRIVE_WORKSPACE }}
189
226
190
227
- name : ensure line endings are correct
191
228
run : src/ci/scripts/verify-line-endings.sh
229
+ working-directory : ${{ env.DEV_DRIVE_WORKSPACE }}
192
230
193
231
- name : ensure backported commits are in upstream branches
194
232
run : src/ci/scripts/verify-backported-commits.sh
233
+ working-directory : ${{ env.DEV_DRIVE_WORKSPACE }}
195
234
196
235
- name : ensure the stable version number is correct
197
236
run : src/ci/scripts/verify-stable-version-number.sh
237
+ working-directory : ${{ env.DEV_DRIVE_WORKSPACE }}
198
238
199
239
- name : run the build
200
240
# Redirect stderr to stdout to avoid reordering the two streams in the GHA logs.
201
241
run : src/ci/scripts/run-build-from-ci.sh 2>&1
242
+ working-directory : ${{ env.DEV_DRIVE_WORKSPACE }}
202
243
env :
203
244
AWS_ACCESS_KEY_ID : ${{ env.CACHES_AWS_ACCESS_KEY_ID }}
204
245
AWS_SECRET_ACCESS_KEY : ${{ secrets[format('AWS_SECRET_ACCESS_KEY_{0}', env.CACHES_AWS_ACCESS_KEY_ID)] }}
205
246
206
247
- name : create github artifacts
207
248
run : src/ci/scripts/create-doc-artifacts.sh
249
+ working-directory : ${{ env.DEV_DRIVE_WORKSPACE }}
208
250
209
251
- name : print disk usage
210
252
run : |
@@ -216,12 +258,13 @@ jobs:
216
258
with :
217
259
# name is set in previous step
218
260
name : ${{ env.DOC_ARTIFACT_NAME }}
219
- path : obj/artifacts/doc
261
+ path : ${{ env.DEV_DRIVE_WORKSPACE }} obj/artifacts/doc
220
262
if-no-files-found : ignore
221
263
retention-days : 5
222
264
223
265
- name : upload artifacts to S3
224
266
run : src/ci/scripts/upload-artifacts.sh
267
+ working-directory : ${{ env.DEV_DRIVE_WORKSPACE }}
225
268
env :
226
269
AWS_ACCESS_KEY_ID : ${{ env.ARTIFACTS_AWS_ACCESS_KEY_ID }}
227
270
AWS_SECRET_ACCESS_KEY : ${{ secrets[format('AWS_SECRET_ACCESS_KEY_{0}', env.ARTIFACTS_AWS_ACCESS_KEY_ID)] }}
@@ -234,6 +277,7 @@ jobs:
234
277
235
278
- name : upload job metrics to DataDog
236
279
if : needs.calculate_matrix.outputs.run_type != 'pr'
280
+ working-directory : ${{ env.DEV_DRIVE_WORKSPACE }}
237
281
env :
238
282
DATADOG_SITE : datadoghq.com
239
283
DATADOG_API_KEY : ${{ secrets.DATADOG_API_KEY }}
@@ -247,7 +291,7 @@ jobs:
247
291
outcome :
248
292
name : bors build finished
249
293
runs-on : ubuntu-latest
250
- needs : [ calculate_matrix, job ]
294
+ needs : [calculate_matrix, job]
251
295
# !cancelled() executes the job regardless of whether the previous jobs passed or failed
252
296
if : ${{ !cancelled() && contains(fromJSON('["auto", "try"]'), needs.calculate_matrix.outputs.run_type) }}
253
297
steps :
0 commit comments