Skip to content

Commit f6fb98b

Browse files
committed
ci: move the Windows job to the top
The Windows job currently takes a whopping ~1h20m to complete. Which is *far* longer than the next-longest job takes (linux-gcc, ~35m). As such, it makes sense to start the Windows job first, to minimize the overall run time (which is now pretty safely the run time of the Windows job). This affects only the Azure Pipelines configuration, not the Travis one, of course, as Travis cannot run our Windows job: 1h20m is distinctly longer than the 50 minute timeout of Travis' free tier. This commit is best viewed with `--color-moved`. Signed-off-by: Johannes Schindelin <[email protected]>
1 parent a4c8e46 commit f6fb98b

File tree

1 file changed

+86
-86
lines changed

1 file changed

+86
-86
lines changed

azure-pipelines.yml

Lines changed: 86 additions & 86 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,92 @@ resources:
33
fetchDepth: 1
44

55
jobs:
6+
- job: windows
7+
displayName: Windows
8+
condition: succeeded()
9+
pool: Hosted
10+
timeoutInMinutes: 240
11+
steps:
12+
- powershell: |
13+
if ("$GITFILESHAREPWD" -ne "" -and "$GITFILESHAREPWD" -ne "`$`(gitfileshare.pwd)") {
14+
net use s: \\gitfileshare.file.core.windows.net\test-cache "$GITFILESHAREPWD" /user:AZURE\gitfileshare /persistent:no
15+
cmd /c mklink /d "$(Build.SourcesDirectory)\test-cache" S:\
16+
}
17+
displayName: 'Mount test-cache'
18+
env:
19+
GITFILESHAREPWD: $(gitfileshare.pwd)
20+
- powershell: |
21+
# Helper to check the error level of the latest command (exit with error when appropriate)
22+
function c() { if (!$?) { exit(1) } }
23+
24+
# Add build agent's MinGit to PATH
25+
$env:PATH = $env:AGENT_HOMEDIRECTORY +"\externals\\git\cmd;" +$env:PATH
26+
27+
# Helper to initialize (or update) a Git worktree
28+
function init ($path, $url, $set_origin) {
29+
if (Test-Path $path) {
30+
cd $path; c
31+
if (Test-Path .git) {
32+
& git init; c
33+
} else {
34+
& git status
35+
}
36+
} else {
37+
& git init $path; c
38+
cd $path; c
39+
}
40+
& git config core.autocrlf false; c
41+
& git config core.untrackedCache true; c
42+
if (($set_origin -ne 0) -and !(git config remote.origin.url)) {
43+
& git remote add origin $url; c
44+
}
45+
& git fetch --depth=1 $url master; c
46+
& git reset --hard FETCH_HEAD; c
47+
& git clean -df; c
48+
}
49+
50+
# Initialize Git for Windows' SDK
51+
$sdk_path = "$(Build.SourcesDirectory)\git-sdk-64"
52+
init "$sdk_path" "https://dev.azure.com/git-for-windows/git-sdk-64/_git/git-sdk-64" 0
53+
54+
# Let Git ignore the SDK and the test-cache
55+
"/git-sdk-64/`n/test-cache/`n" | Out-File -NoNewLine -Encoding ascii -Append "$(Build.SourcesDirectory)\.git\info\exclude"
56+
displayName: 'Initialize the Git for Windows SDK'
57+
- powershell: |
58+
& "git-sdk-64\git-cmd.exe" --command=usr\\bin\\bash.exe -lc @"
59+
export MAKEFLAGS=-j10
60+
export DEVELOPER=1
61+
export NO_PERL=1
62+
export NO_SVN_TESTS=1
63+
export GIT_TEST_SKIP_REBASE_P=1
64+
65+
ci/run-build-and-tests.sh || {
66+
ci/print-test-failures.sh
67+
exit 1
68+
}
69+
"@
70+
if (!$?) { exit(1) }
71+
displayName: 'Build & Test'
72+
env:
73+
HOME: $(Build.SourcesDirectory)
74+
MSYSTEM: MINGW64
75+
- powershell: |
76+
if ("$GITFILESHAREPWD" -ne "" -and "$GITFILESHAREPWD" -ne "`$`(gitfileshare.pwd)") {
77+
cmd /c rmdir "$(Build.SourcesDirectory)\test-cache"
78+
}
79+
displayName: 'Unmount test-cache'
80+
condition: true
81+
env:
82+
GITFILESHAREPWD: $(gitfileshare.pwd)
83+
- task: PublishTestResults@2
84+
displayName: 'Publish Test Results **/TEST-*.xml'
85+
inputs:
86+
mergeTestResults: true
87+
testRunTitle: 'windows'
88+
platform: Windows
89+
publishRunAttachments: false
90+
condition: succeededOrFailed()
91+
692
- job: linux_clang
793
displayName: linux-clang
894
condition: succeeded()
@@ -153,92 +239,6 @@ jobs:
153239
publishRunAttachments: false
154240
condition: succeededOrFailed()
155241

156-
- job: windows
157-
displayName: Windows
158-
condition: succeeded()
159-
pool: Hosted
160-
timeoutInMinutes: 240
161-
steps:
162-
- powershell: |
163-
if ("$GITFILESHAREPWD" -ne "" -and "$GITFILESHAREPWD" -ne "`$`(gitfileshare.pwd)") {
164-
net use s: \\gitfileshare.file.core.windows.net\test-cache "$GITFILESHAREPWD" /user:AZURE\gitfileshare /persistent:no
165-
cmd /c mklink /d "$(Build.SourcesDirectory)\test-cache" S:\
166-
}
167-
displayName: 'Mount test-cache'
168-
env:
169-
GITFILESHAREPWD: $(gitfileshare.pwd)
170-
- powershell: |
171-
# Helper to check the error level of the latest command (exit with error when appropriate)
172-
function c() { if (!$?) { exit(1) } }
173-
174-
# Add build agent's MinGit to PATH
175-
$env:PATH = $env:AGENT_HOMEDIRECTORY +"\externals\\git\cmd;" +$env:PATH
176-
177-
# Helper to initialize (or update) a Git worktree
178-
function init ($path, $url, $set_origin) {
179-
if (Test-Path $path) {
180-
cd $path; c
181-
if (Test-Path .git) {
182-
& git init; c
183-
} else {
184-
& git status
185-
}
186-
} else {
187-
& git init $path; c
188-
cd $path; c
189-
}
190-
& git config core.autocrlf false; c
191-
& git config core.untrackedCache true; c
192-
if (($set_origin -ne 0) -and !(git config remote.origin.url)) {
193-
& git remote add origin $url; c
194-
}
195-
& git fetch --depth=1 $url master; c
196-
& git reset --hard FETCH_HEAD; c
197-
& git clean -df; c
198-
}
199-
200-
# Initialize Git for Windows' SDK
201-
$sdk_path = "$(Build.SourcesDirectory)\git-sdk-64"
202-
init "$sdk_path" "https://dev.azure.com/git-for-windows/git-sdk-64/_git/git-sdk-64" 0
203-
204-
# Let Git ignore the SDK and the test-cache
205-
"/git-sdk-64/`n/test-cache/`n" | Out-File -NoNewLine -Encoding ascii -Append "$(Build.SourcesDirectory)\.git\info\exclude"
206-
displayName: 'Initialize the Git for Windows SDK'
207-
- powershell: |
208-
& "git-sdk-64\git-cmd.exe" --command=usr\\bin\\bash.exe -lc @"
209-
export MAKEFLAGS=-j10
210-
export DEVELOPER=1
211-
export NO_PERL=1
212-
export NO_SVN_TESTS=1
213-
export GIT_TEST_SKIP_REBASE_P=1
214-
215-
ci/run-build-and-tests.sh || {
216-
ci/print-test-failures.sh
217-
exit 1
218-
}
219-
"@
220-
if (!$?) { exit(1) }
221-
displayName: 'Build & Test'
222-
env:
223-
HOME: $(Build.SourcesDirectory)
224-
MSYSTEM: MINGW64
225-
- powershell: |
226-
if ("$GITFILESHAREPWD" -ne "" -and "$GITFILESHAREPWD" -ne "`$`(gitfileshare.pwd)") {
227-
cmd /c rmdir "$(Build.SourcesDirectory)\test-cache"
228-
}
229-
displayName: 'Unmount test-cache'
230-
condition: true
231-
env:
232-
GITFILESHAREPWD: $(gitfileshare.pwd)
233-
- task: PublishTestResults@2
234-
displayName: 'Publish Test Results **/TEST-*.xml'
235-
inputs:
236-
mergeTestResults: true
237-
testRunTitle: 'windows'
238-
platform: Windows
239-
publishRunAttachments: false
240-
condition: succeededOrFailed()
241-
242242
- job: linux32
243243
displayName: Linux32
244244
condition: succeeded()

0 commit comments

Comments
 (0)