summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPatrick Steinhardt <ps@pks.im>2018-10-12 12:08:32 +0200
committerPatrick Steinhardt <ps@pks.im>2018-10-19 13:48:18 +0200
commit8c2d6c0d5a5a79cfd3653f5ed6443d5409fd5995 (patch)
treea7132712eb9542f3b4e0f2b5a4a131d315ab6a9c
parentc509687d22ec7f5bf33710f9ec85996f2930ec18 (diff)
downloadlibgit2-8c2d6c0d5a5a79cfd3653f5ed6443d5409fd5995.tar.gz
ci: use templates for VSTS builds
Our build YAML is becoming unweildly and full of copy-pasta. Simplify with templates. (cherry picked from commit 6b2d8f09bc9e5bdf74f98b7470ebc39436be600f)
-rw-r--r--.vsts-ci.yml170
-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, 140 deletions
diff --git a/.vsts-ci.yml b/.vsts-ci.yml
index 4501b664e..f191f4dc6 100644
--- a/.vsts-ci.yml
+++ b/.vsts-ci.yml
@@ -11,76 +11,24 @@ jobs:
pool:
vmImage: 'Ubuntu 16.04'
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
- - task: PublishTestResults@2
- displayName: Publish Test Results
- condition: succeededOrFailed()
- inputs:
- testResultsFiles: 'results_*.xml'
- searchFolder: '$(Build.BinariesDirectory)'
- mergeTestResults: true
- job: linux_trusty_clang_openssl
displayName: 'Linux (Trusty; Clang; OpenSSL)'
pool:
vmImage: 'Ubuntu 16.04'
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'
- 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
- job: macos
displayName: 'macOS'
@@ -89,65 +37,30 @@ jobs:
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
- - task: PublishTestResults@2
- displayName: Publish Test Results
- condition: succeededOrFailed()
- inputs:
- testResultsFiles: 'results_*.xml'
- searchFolder: '$(Build.BinariesDirectory)'
- mergeTestResults: true
+ - template: ci/vsts-bash.yml
+ parameters:
+ environmentVariables:
+ TMPDIR: $(Agent.TempDirectory)
+ PKG_CONFIG_PATH: /usr/local/opt/openssl/lib/pkgconfig
+ LEAK_CHECK: leaks
- job: windows_vs_amd64
displayName: 'Windows (Visual Studio; amd64)'
pool: 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)'
- - task: PublishTestResults@2
- displayName: Publish Test Results
- condition: succeededOrFailed()
- inputs:
- testResultsFiles: 'results_*.xml'
- searchFolder: '$(Build.BinariesDirectory)'
- mergeTestResults: true
+ - template: ci/vsts-powershell.yml
+ parameters:
+ environmentVariables:
+ CMAKE_OPTIONS: -DMSVC_CRTDBG=ON -G"Visual Studio 12 2013 Win64"
- job: windows_vs_x86
displayName: 'Windows (Visual Studio; x86)'
pool: 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)'
- - task: PublishTestResults@2
- displayName: Publish Test Results
- condition: succeededOrFailed()
- inputs:
- testResultsFiles: 'results_*.xml'
- searchFolder: '$(Build.BinariesDirectory)'
- mergeTestResults: true
+ - template: ci/vsts-powershell.yml
+ parameters:
+ environmentVariables:
+ CMAKE_OPTIONS: -DMSVC_CRTDBG=ON -G"Visual Studio 12 2013"
- job: windows_mingw_amd64
displayName: 'Windows (MinGW; amd64)'
@@ -155,26 +68,14 @@ jobs:
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)'
- - task: PublishTestResults@2
- displayName: Publish Test Results
- condition: succeededOrFailed()
- inputs:
- testResultsFiles: 'results_*.xml'
- searchFolder: '$(Build.BinariesDirectory)'
- mergeTestResults: true
+ - 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
- job: windows_mingw_x86
displayName: 'Windows (MinGW; x86)'
@@ -186,19 +87,8 @@ jobs:
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)'
- - task: PublishTestResults@2
- displayName: Publish Test Results
- condition: succeededOrFailed()
- inputs:
- testResultsFiles: 'results_*.xml'
- searchFolder: '$(Build.BinariesDirectory)'
- mergeTestResults: true
+ - 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