summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEdward Thomson <ethomson@edwardthomson.com>2018-08-26 18:05:31 +0100
committerEdward Thomson <ethomson@edwardthomson.com>2018-09-20 11:30:59 +0100
commit8ce01d817e87e6f8cc890f2017a319547b06877a (patch)
tree444e861c8f4f1d990d16f132b402fb86ddca0414
parent9b122bfbf51d21683e2bc8042487818e715a707c (diff)
downloadlibgit2-8ce01d817e87e6f8cc890f2017a319547b06877a.tar.gz
ci: use templates for VSTS builds
Our build YAML is becoming unweildly and full of copy-pasta. Simplify with templates.
-rw-r--r--.vsts-ci.yml118
-rw-r--r--ci/vsts-bash.yml17
-rw-r--r--ci/vsts-docker.yml33
-rw-r--r--ci/vsts-powershell.yml17
4 files changed, 97 insertions, 88 deletions
diff --git a/.vsts-ci.yml b/.vsts-ci.yml
index 2098deda7..6788e0d8f 100644
--- a/.vsts-ci.yml
+++ b/.vsts-ci.yml
@@ -11,57 +11,22 @@ phases:
queue:
name: 'Hosted Linux Preview'
steps:
- - task: Docker@0
- displayName: Build
- inputs:
- action: 'Run an image'
+ - template: ci/vsts-docker.yml
+ parameters:
imageName: 'libgit2/trusty-openssl:latest'
- volumes: |
- $(Build.SourcesDirectory):/src
- $(Build.BinariesDirectory):/build
- workDir: '/build'
- containerCommand: '/src/ci/build.sh'
- detached: false
- - task: Docker@0
- displayName: Test
- inputs:
- action: 'Run an image'
- imageName: 'libgit2/trusty-openssl:latest'
- volumes: |
- $(Build.SourcesDirectory):/src
- $(Build.BinariesDirectory):/build
- envVars: |
+ environmentVariables: |
CC=gcc
LEAK_CHECK=valgrind
- workDir: '/build'
- containerCommand: '/src/ci/test.sh'
- detached: false
- phase: linux_trusty_clang_openssl
displayName: 'Linux (Trusty; Clang; OpenSSL)'
queue:
name: 'Hosted Linux Preview'
steps:
- - task: Docker@0
- displayName: Build
- inputs:
- action: 'Run an image'
- imageName: 'libgit2/trusty-openssl:latest'
- volumes: |
- $(Build.SourcesDirectory):/src
- $(Build.BinariesDirectory):/build
- workDir: '/build'
- containerCommand: '/src/ci/build.sh'
- detached: false
- - task: Docker@0
- displayName: Test
- inputs:
- action: 'Run an image'
+ - template: ci/vsts-docker.yml
+ parameters:
imageName: 'libgit2/trusty-openssl:latest'
- volumes: |
- $(Build.SourcesDirectory):/src
- $(Build.BinariesDirectory):/build
- envVars: |
+ environmentVariables: |
CC=clang
LEAK_CHECK=valgrind
workDir: '/build'
@@ -75,46 +40,32 @@ phases:
steps:
- bash: . '$(Build.SourcesDirectory)/ci/setup-osx.sh'
displayName: Setup
- workingDirectory: '$(Build.BinariesDirectory)'
- - bash: . '$(Build.SourcesDirectory)/ci/build.sh'
- displayName: Build
- workingDirectory: '$(Build.BinariesDirectory)'
- env:
- PKG_CONFIG_PATH: /usr/local/opt/openssl/lib/pkgconfig
- - bash: . '$(Build.SourcesDirectory)/ci/test.sh'
- displayName: Test
- workingDirectory: '$(Build.BinariesDirectory)'
- env:
- TMPDIR: $(Agent.TempDirectory)
- LEAK_CHECK: leaks
+ - template: ci/vsts-bash.yml
+ parameters:
+ environmentVariables:
+ TMPDIR: $(Agent.TempDirectory)
+ PKG_CONFIG_PATH: /usr/local/opt/openssl/lib/pkgconfig
+ LEAK_CHECK: leaks
- phase: windows_vs_amd64
displayName: 'Windows (Visual Studio; amd64)'
queue:
name: Hosted
steps:
- - powershell: . '$(Build.SourcesDirectory)\ci\build.ps1'
- displayName: Build
- workingDirectory: '$(Build.BinariesDirectory)'
- env:
- CMAKE_OPTIONS: -DMSVC_CRTDBG=ON -G"Visual Studio 12 2013 Win64"
- - powershell: . '$(Build.SourcesDirectory)\ci\test.ps1'
- displayName: Test
- workingDirectory: '$(Build.BinariesDirectory)'
+ - template: ci/vsts-powershell.yml
+ parameters:
+ environmentVariables:
+ CMAKE_OPTIONS: -DMSVC_CRTDBG=ON -G"Visual Studio 12 2013 Win64"
- phase: windows_vs_x86
displayName: 'Windows (Visual Studio; x86)'
queue:
name: Hosted
steps:
- - powershell: . '$(Build.SourcesDirectory)\ci\build.ps1'
- displayName: Build
- workingDirectory: '$(Build.BinariesDirectory)'
- env:
- CMAKE_OPTIONS: -DMSVC_CRTDBG=ON -G"Visual Studio 12 2013"
- - powershell: . '$(Build.SourcesDirectory)\ci\test.ps1'
- displayName: Test
- workingDirectory: '$(Build.BinariesDirectory)'
+ - template: ci/vsts-powershell.yml
+ parameters:
+ environmentVariables:
+ CMAKE_OPTIONS: -DMSVC_CRTDBG=ON -G"Visual Studio 12 2013"
- phase: windows_mingw_amd64
displayName: 'Windows (MinGW; amd64)'
@@ -123,19 +74,14 @@ phases:
steps:
- powershell: . '$(Build.SourcesDirectory)\ci\setup-mingw.ps1'
displayName: Setup
- workingDirectory: '$(Build.BinariesDirectory)'
env:
TEMP: $(Agent.TempDirectory)
ARCH: amd64
- - powershell: . '$(Build.SourcesDirectory)\ci\build.ps1'
- displayName: Build
- workingDirectory: '$(Build.BinariesDirectory)'
- env:
- CMAKE_OPTIONS: -G"MinGW Makefiles"
- 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
- - powershell: . '$(Build.SourcesDirectory)\ci\test.ps1'
- displayName: Test
- workingDirectory: '$(Build.BinariesDirectory)'
+ - template: ci/vsts-powershell.yml
+ parameters:
+ environmentVariables:
+ CMAKE_OPTIONS: -G"MinGW Makefiles"
+ 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
- phase: windows_mingw_x86
displayName: 'Windows (MinGW; x86)'
@@ -148,12 +94,8 @@ phases:
env:
TEMP: $(Agent.TempDirectory)
ARCH: x86
- - powershell: . '$(Build.SourcesDirectory)\ci\build.ps1'
- displayName: Build
- workingDirectory: '$(Build.BinariesDirectory)'
- env:
- CMAKE_OPTIONS: -G"MinGW Makefiles"
- 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
- - powershell: . '$(Build.SourcesDirectory)\ci\test.ps1'
- displayName: Test
- workingDirectory: '$(Build.BinariesDirectory)'
+ - template: ci/vsts-powershell.yml
+ parameters:
+ environmentVariables:
+ CMAKE_OPTIONS: -G"MinGW Makefiles"
+ 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
diff --git a/ci/vsts-bash.yml b/ci/vsts-bash.yml
new file mode 100644
index 000000000..d776a3649
--- /dev/null
+++ b/ci/vsts-bash.yml
@@ -0,0 +1,17 @@
+# These are the steps used for building on machines with bash.
+steps:
+- bash: . '$(Build.SourcesDirectory)/ci/build.sh'
+ displayName: Build
+ workingDirectory: '$(Build.BinariesDirectory)'
+ env: ${{ parameters.environmentVariables }}
+- bash: . '$(Build.SourcesDirectory)/ci/test.sh'
+ displayName: Test
+ workingDirectory: '$(Build.BinariesDirectory)'
+ env: ${{ parameters.environmentVariables }}
+- task: PublishTestResults@2
+ displayName: Publish Test Results
+ condition: succeededOrFailed()
+ inputs:
+ testResultsFiles: 'results_*.xml'
+ searchFolder: '$(Build.BinariesDirectory)'
+ mergeTestResults: true
diff --git a/ci/vsts-docker.yml b/ci/vsts-docker.yml
new file mode 100644
index 000000000..e92510478
--- /dev/null
+++ b/ci/vsts-docker.yml
@@ -0,0 +1,33 @@
+# These are the steps used in a container-based build in VSTS.
+steps:
+- task: docker@0
+ displayName: Build
+ inputs:
+ action: 'Run an image'
+ imageName: ${{ parameters.imageName }}
+ volumes: |
+ $(Build.SourcesDirectory):/src
+ $(Build.BinariesDirectory):/build
+ envVars: ${{ parameters.environmentVariables }}
+ workDir: '/build'
+ containerCommand: '/src/ci/build.sh'
+ detached: false
+- task: docker@0
+ displayName: Test
+ inputs:
+ action: 'Run an image'
+ imageName: ${{ parameters.imageName }}
+ volumes: |
+ $(Build.SourcesDirectory):/src
+ $(Build.BinariesDirectory):/build
+ envVars: ${{ parameters.environmentVariables }}
+ workDir: '/build'
+ containerCommand: '/src/ci/test.sh'
+ detached: false
+- task: publishtestresults@2
+ displayName: Publish Test Results
+ condition: succeededOrFailed()
+ inputs:
+ testResultsFiles: 'results_*.xml'
+ searchFolder: '$(Build.BinariesDirectory)'
+ mergeTestResults: true
diff --git a/ci/vsts-powershell.yml b/ci/vsts-powershell.yml
new file mode 100644
index 000000000..a2eb175d5
--- /dev/null
+++ b/ci/vsts-powershell.yml
@@ -0,0 +1,17 @@
+# These are the steps used for building on machines with PowerShell.
+steps:
+- powershell: . '$(Build.SourcesDirectory)\ci\build.ps1'
+ displayName: Build
+ workingDirectory: '$(Build.BinariesDirectory)'
+ env: ${{ parameters.environmentVariables }}
+- powershell: . '$(Build.SourcesDirectory)\ci\test.ps1'
+ displayName: Test
+ workingDirectory: '$(Build.BinariesDirectory)'
+ env: ${{ parameters.environmentVariables }}
+- task: PublishTestResults@2
+ displayName: Publish Test Results
+ condition: succeededOrFailed()
+ inputs:
+ testResultsFiles: 'results_*.xml'
+ searchFolder: '$(Build.BinariesDirectory)'
+ mergeTestResults: true