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