Skip to content

Commit 6b2d8f0

Browse files
committed
ci: use templates for VSTS builds
Our build YAML is becoming unweildly and full of copy-pasta. Simplify with templates.
1 parent 306875b commit 6b2d8f0

File tree

4 files changed

+103
-200
lines changed

4 files changed

+103
-200
lines changed

.vsts-ci.yml

Lines changed: 36 additions & 200 deletions
Original file line numberDiff line numberDiff line change
@@ -11,156 +11,50 @@ jobs:
1111
pool:
1212
vmImage: 'Ubuntu 16.04'
1313
steps:
14-
- task: Docker@0
15-
displayName: Build
16-
inputs:
17-
action: 'Run an image'
14+
- template: ci/vsts-docker.yml
15+
parameters:
1816
imageName: 'libgit2/trusty-openssl:latest'
19-
volumes: |
20-
$(Build.SourcesDirectory):/src
21-
$(Build.BinariesDirectory):/build
22-
workDir: '/build'
23-
containerCommand: '/src/ci/build.sh'
24-
detached: false
25-
- task: Docker@0
26-
displayName: Test
27-
inputs:
28-
action: 'Run an image'
29-
imageName: 'libgit2/trusty-openssl:latest'
30-
volumes: |
31-
$(Build.SourcesDirectory):/src
32-
$(Build.BinariesDirectory):/build
33-
envVars: |
17+
environmentVariables: |
3418
CC=gcc
3519
LEAK_CHECK=valgrind
36-
workDir: '/build'
37-
containerCommand: '/src/ci/test.sh'
38-
detached: false
39-
- task: PublishTestResults@2
40-
displayName: Publish Test Results
41-
condition: succeededOrFailed()
42-
inputs:
43-
testResultsFiles: 'results_*.xml'
44-
searchFolder: '$(Build.BinariesDirectory)'
45-
mergeTestResults: true
4620
4721
- job: linux_trusty_gcc_mbedtls
4822
displayName: 'Linux (Trusty; GCC; mbedTLS)'
4923
pool:
5024
vmImage: 'Ubuntu 16.04'
5125
steps:
52-
- task: Docker@0
53-
displayName: Build
54-
inputs:
55-
action: 'Run an image'
26+
- template: ci/vsts-docker.yml
27+
parameters:
5628
imageName: 'libgit2/trusty-mbedtls:latest'
57-
volumes: |
58-
$(Build.SourcesDirectory):/src
59-
$(Build.BinariesDirectory):/build
60-
envVars: |
29+
environmentVariables: |
6130
CC=gcc
6231
CMAKE_OPTIONS=-DUSE_HTTPS=mbedTLS -DSHA1_BACKEND=mbedTLS
6332
LEAK_CHECK=valgrind
64-
workDir: '/build'
65-
containerCommand: '/src/ci/build.sh'
66-
detached: false
67-
- task: Docker@0
68-
displayName: Test
69-
inputs:
70-
action: 'Run an image'
71-
imageName: 'libgit2/trusty-mbedtls:latest'
72-
volumes: |
73-
$(Build.SourcesDirectory):/src
74-
$(Build.BinariesDirectory):/build
75-
envVars: 'LEAK_CHECK=valgrind'
76-
workDir: '/build'
77-
containerCommand: '/src/ci/test.sh'
78-
detached: false
79-
- task: PublishTestResults@2
80-
displayName: Publish Test Results
81-
condition: succeededOrFailed()
82-
inputs:
83-
testResultsFiles: 'results_*.xml'
84-
searchFolder: '$(Build.BinariesDirectory)'
85-
mergeTestResults: true
8633
8734
- job: linux_trusty_clang_openssl
8835
displayName: 'Linux (Trusty; Clang; OpenSSL)'
8936
pool:
9037
vmImage: 'Ubuntu 16.04'
9138
steps:
92-
- task: Docker@0
93-
displayName: Build
94-
inputs:
95-
action: 'Run an image'
96-
imageName: 'libgit2/trusty-openssl:latest'
97-
volumes: |
98-
$(Build.SourcesDirectory):/src
99-
$(Build.BinariesDirectory):/build
100-
workDir: '/build'
101-
containerCommand: '/src/ci/build.sh'
102-
detached: false
103-
- task: Docker@0
104-
displayName: Test
105-
inputs:
106-
action: 'Run an image'
39+
- template: ci/vsts-docker.yml
40+
parameters:
10741
imageName: 'libgit2/trusty-openssl:latest'
108-
volumes: |
109-
$(Build.SourcesDirectory):/src
110-
$(Build.BinariesDirectory):/build
111-
envVars: |
42+
environmentVariables: |
11243
CC=clang
11344
LEAK_CHECK=valgrind
114-
workDir: '/build'
115-
containerCommand: '/src/ci/test.sh'
116-
detached: false
117-
- task: PublishTestResults@2
118-
displayName: Publish Test Results
119-
condition: succeededOrFailed()
120-
inputs:
121-
testResultsFiles: 'results_*.xml'
122-
searchFolder: '$(Build.BinariesDirectory)'
123-
mergeTestResults: true
12445
12546
- job: linux_trusty_clang_mbedtls
12647
displayName: 'Linux (Trusty; Clang; mbedTLS)'
12748
pool:
12849
vmImage: 'Ubuntu 16.04'
12950
steps:
130-
- task: Docker@0
131-
displayName: Build
132-
inputs:
133-
action: 'Run an image'
51+
- template: ci/vsts-docker.yml
52+
parameters:
13453
imageName: 'libgit2/trusty-mbedtls:latest'
135-
volumes: |
136-
$(Build.SourcesDirectory):/src
137-
$(Build.BinariesDirectory):/build
138-
envVars: |
54+
environmentVariables: |
13955
CC=clang
14056
CMAKE_OPTIONS=-DUSE_HTTPS=mbedTLS -DSHA1_BACKEND=mbedTLS
14157
LEAK_CHECK=valgrind
142-
workDir: '/build'
143-
containerCommand: '/src/ci/build.sh'
144-
detached: false
145-
- task: Docker@0
146-
displayName: Test
147-
inputs:
148-
action: 'Run an image'
149-
imageName: 'libgit2/trusty-mbedtls:latest'
150-
volumes: |
151-
$(Build.SourcesDirectory):/src
152-
$(Build.BinariesDirectory):/build
153-
envVars: 'LEAK_CHECK=valgrind'
154-
workDir: '/build'
155-
containerCommand: '/src/ci/test.sh'
156-
detached: false
157-
- task: PublishTestResults@2
158-
displayName: Publish Test Results
159-
condition: succeededOrFailed()
160-
inputs:
161-
testResultsFiles: 'results_*.xml'
162-
searchFolder: '$(Build.BinariesDirectory)'
163-
mergeTestResults: true
16458
16559
- job: macos
16660
displayName: 'macOS'
@@ -169,92 +63,45 @@ jobs:
16963
steps:
17064
- bash: . '$(Build.SourcesDirectory)/ci/setup-osx.sh'
17165
displayName: Setup
172-
workingDirectory: '$(Build.BinariesDirectory)'
173-
- bash: . '$(Build.SourcesDirectory)/ci/build.sh'
174-
displayName: Build
175-
workingDirectory: '$(Build.BinariesDirectory)'
176-
env:
177-
PKG_CONFIG_PATH: /usr/local/opt/openssl/lib/pkgconfig
178-
- bash: . '$(Build.SourcesDirectory)/ci/test.sh'
179-
displayName: Test
180-
workingDirectory: '$(Build.BinariesDirectory)'
181-
env:
182-
TMPDIR: $(Agent.TempDirectory)
183-
LEAK_CHECK: leaks
184-
- task: PublishTestResults@2
185-
displayName: Publish Test Results
186-
condition: succeededOrFailed()
187-
inputs:
188-
testResultsFiles: 'results_*.xml'
189-
searchFolder: '$(Build.BinariesDirectory)'
190-
mergeTestResults: true
66+
- template: ci/vsts-bash.yml
67+
parameters:
68+
environmentVariables:
69+
TMPDIR: $(Agent.TempDirectory)
70+
PKG_CONFIG_PATH: /usr/local/opt/openssl/lib/pkgconfig
71+
LEAK_CHECK: leaks
19172

19273
- job: windows_vs_amd64
19374
displayName: 'Windows (Visual Studio; amd64)'
19475
pool: Hosted
19576
steps:
196-
- powershell: . '$(Build.SourcesDirectory)\ci\build.ps1'
197-
displayName: Build
198-
workingDirectory: '$(Build.BinariesDirectory)'
199-
env:
200-
CMAKE_OPTIONS: -DMSVC_CRTDBG=ON -G"Visual Studio 12 2013 Win64"
201-
- powershell: . '$(Build.SourcesDirectory)\ci\test.ps1'
202-
displayName: Test
203-
workingDirectory: '$(Build.BinariesDirectory)'
204-
- task: PublishTestResults@2
205-
displayName: Publish Test Results
206-
condition: succeededOrFailed()
207-
inputs:
208-
testResultsFiles: 'results_*.xml'
209-
searchFolder: '$(Build.BinariesDirectory)'
210-
mergeTestResults: true
77+
- template: ci/vsts-powershell.yml
78+
parameters:
79+
environmentVariables:
80+
CMAKE_OPTIONS: -DMSVC_CRTDBG=ON -G"Visual Studio 12 2013 Win64"
21181

21282
- job: windows_vs_x86
21383
displayName: 'Windows (Visual Studio; x86)'
21484
pool: Hosted
21585
steps:
216-
- powershell: . '$(Build.SourcesDirectory)\ci\build.ps1'
217-
displayName: Build
218-
workingDirectory: '$(Build.BinariesDirectory)'
219-
env:
220-
CMAKE_OPTIONS: -DMSVC_CRTDBG=ON -G"Visual Studio 12 2013"
221-
- powershell: . '$(Build.SourcesDirectory)\ci\test.ps1'
222-
displayName: Test
223-
workingDirectory: '$(Build.BinariesDirectory)'
224-
- task: PublishTestResults@2
225-
displayName: Publish Test Results
226-
condition: succeededOrFailed()
227-
inputs:
228-
testResultsFiles: 'results_*.xml'
229-
searchFolder: '$(Build.BinariesDirectory)'
230-
mergeTestResults: true
86+
- template: ci/vsts-powershell.yml
87+
parameters:
88+
environmentVariables:
89+
CMAKE_OPTIONS: -DMSVC_CRTDBG=ON -G"Visual Studio 12 2013"
23190

23291
- job: windows_mingw_amd64
23392
displayName: 'Windows (MinGW; amd64)'
23493
pool: Hosted
23594
steps:
23695
- powershell: . '$(Build.SourcesDirectory)\ci\setup-mingw.ps1'
23796
displayName: Setup
238-
workingDirectory: '$(Build.BinariesDirectory)'
23997
env:
24098
TEMP: $(Agent.TempDirectory)
24199
ARCH: amd64
242-
- powershell: . '$(Build.SourcesDirectory)\ci\build.ps1'
243-
displayName: Build
244-
workingDirectory: '$(Build.BinariesDirectory)'
245-
env:
246-
CMAKE_OPTIONS: -G"MinGW Makefiles"
247-
PATH: $(Agent.TempDirectory)\mingw64\bin;C:\ProgramData\Oracle\Java\javapath;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\CMake\bin
248-
- powershell: . '$(Build.SourcesDirectory)\ci\test.ps1'
249-
displayName: Test
250-
workingDirectory: '$(Build.BinariesDirectory)'
251-
- task: PublishTestResults@2
252-
displayName: Publish Test Results
253-
condition: succeededOrFailed()
254-
inputs:
255-
testResultsFiles: 'results_*.xml'
256-
searchFolder: '$(Build.BinariesDirectory)'
257-
mergeTestResults: true
100+
- template: ci/vsts-powershell.yml
101+
parameters:
102+
environmentVariables:
103+
CMAKE_OPTIONS: -G"MinGW Makefiles"
104+
PATH: $(Agent.TempDirectory)\mingw64\bin;C:\ProgramData\Oracle\Java\javapath;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\CMake\bin
258105

259106
- job: windows_mingw_x86
260107
displayName: 'Windows (MinGW; x86)'
@@ -266,19 +113,8 @@ jobs:
266113
env:
267114
TEMP: $(Agent.TempDirectory)
268115
ARCH: x86
269-
- powershell: . '$(Build.SourcesDirectory)\ci\build.ps1'
270-
displayName: Build
271-
workingDirectory: '$(Build.BinariesDirectory)'
272-
env:
273-
CMAKE_OPTIONS: -G"MinGW Makefiles"
274-
PATH: $(Agent.TempDirectory)\mingw32\bin;C:\ProgramData\Oracle\Java\javapath;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\CMake\bin
275-
- powershell: . '$(Build.SourcesDirectory)\ci\test.ps1'
276-
displayName: Test
277-
workingDirectory: '$(Build.BinariesDirectory)'
278-
- task: PublishTestResults@2
279-
displayName: Publish Test Results
280-
condition: succeededOrFailed()
281-
inputs:
282-
testResultsFiles: 'results_*.xml'
283-
searchFolder: '$(Build.BinariesDirectory)'
284-
mergeTestResults: true
116+
- template: ci/vsts-powershell.yml
117+
parameters:
118+
environmentVariables:
119+
CMAKE_OPTIONS: -G"MinGW Makefiles"
120+
PATH: $(Agent.TempDirectory)\mingw32\bin;C:\ProgramData\Oracle\Java\javapath;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\CMake\bin

ci/vsts-bash.yml

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
# These are the steps used for building on machines with bash.
2+
steps:
3+
- bash: . '$(Build.SourcesDirectory)/ci/build.sh'
4+
displayName: Build
5+
workingDirectory: '$(Build.BinariesDirectory)'
6+
env: ${{ parameters.environmentVariables }}
7+
- bash: . '$(Build.SourcesDirectory)/ci/test.sh'
8+
displayName: Test
9+
workingDirectory: '$(Build.BinariesDirectory)'
10+
env: ${{ parameters.environmentVariables }}
11+
- task: PublishTestResults@2
12+
displayName: Publish Test Results
13+
condition: succeededOrFailed()
14+
inputs:
15+
testResultsFiles: 'results_*.xml'
16+
searchFolder: '$(Build.BinariesDirectory)'
17+
mergeTestResults: true

ci/vsts-docker.yml

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
# These are the steps used in a container-based build in VSTS.
2+
steps:
3+
- task: docker@0
4+
displayName: Build
5+
inputs:
6+
action: 'Run an image'
7+
imageName: ${{ parameters.imageName }}
8+
volumes: |
9+
$(Build.SourcesDirectory):/src
10+
$(Build.BinariesDirectory):/build
11+
envVars: ${{ parameters.environmentVariables }}
12+
workDir: '/build'
13+
containerCommand: '/src/ci/build.sh'
14+
detached: false
15+
- task: docker@0
16+
displayName: Test
17+
inputs:
18+
action: 'Run an image'
19+
imageName: ${{ parameters.imageName }}
20+
volumes: |
21+
$(Build.SourcesDirectory):/src
22+
$(Build.BinariesDirectory):/build
23+
envVars: ${{ parameters.environmentVariables }}
24+
workDir: '/build'
25+
containerCommand: '/src/ci/test.sh'
26+
detached: false
27+
- task: publishtestresults@2
28+
displayName: Publish Test Results
29+
condition: succeededOrFailed()
30+
inputs:
31+
testResultsFiles: 'results_*.xml'
32+
searchFolder: '$(Build.BinariesDirectory)'
33+
mergeTestResults: true

ci/vsts-powershell.yml

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
# These are the steps used for building on machines with PowerShell.
2+
steps:
3+
- powershell: . '$(Build.SourcesDirectory)\ci\build.ps1'
4+
displayName: Build
5+
workingDirectory: '$(Build.BinariesDirectory)'
6+
env: ${{ parameters.environmentVariables }}
7+
- powershell: . '$(Build.SourcesDirectory)\ci\test.ps1'
8+
displayName: Test
9+
workingDirectory: '$(Build.BinariesDirectory)'
10+
env: ${{ parameters.environmentVariables }}
11+
- task: PublishTestResults@2
12+
displayName: Publish Test Results
13+
condition: succeededOrFailed()
14+
inputs:
15+
testResultsFiles: 'results_*.xml'
16+
searchFolder: '$(Build.BinariesDirectory)'
17+
mergeTestResults: true

0 commit comments

Comments
 (0)