diff options
author | Edward Thomson <ethomson@edwardthomson.com> | 2018-08-26 18:05:31 +0100 |
---|---|---|
committer | Edward Thomson <ethomson@edwardthomson.com> | 2018-09-06 11:18:59 +0100 |
commit | 6b2d8f09bc9e5bdf74f98b7470ebc39436be600f (patch) | |
tree | 1f039ac709d4f38c9df260b7395a06bec929f1bd | |
parent | 306875bc1c0c4cf82a4feb9436d161750c3f0aad (diff) | |
download | libgit2-6b2d8f09bc9e5bdf74f98b7470ebc39436be600f.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.yml | 236 | ||||
-rw-r--r-- | ci/vsts-bash.yml | 17 | ||||
-rw-r--r-- | ci/vsts-docker.yml | 33 | ||||
-rw-r--r-- | ci/vsts-powershell.yml | 17 |
4 files changed, 103 insertions, 200 deletions
diff --git a/.vsts-ci.yml b/.vsts-ci.yml index 63db6278a..7506e3fb4 100644 --- a/.vsts-ci.yml +++ b/.vsts-ci.yml @@ -11,156 +11,50 @@ 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_gcc_mbedtls displayName: 'Linux (Trusty; GCC; mbedTLS)' 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-mbedtls:latest' - volumes: | - $(Build.SourcesDirectory):/src - $(Build.BinariesDirectory):/build - envVars: | + environmentVariables: | CC=gcc CMAKE_OPTIONS=-DUSE_HTTPS=mbedTLS -DSHA1_BACKEND=mbedTLS LEAK_CHECK=valgrind - workDir: '/build' - containerCommand: '/src/ci/build.sh' - detached: false - - task: Docker@0 - displayName: Test - inputs: - action: 'Run an image' - imageName: 'libgit2/trusty-mbedtls:latest' - volumes: | - $(Build.SourcesDirectory):/src - $(Build.BinariesDirectory):/build - envVars: '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: linux_trusty_clang_mbedtls displayName: 'Linux (Trusty; Clang; mbedTLS)' 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-mbedtls:latest' - volumes: | - $(Build.SourcesDirectory):/src - $(Build.BinariesDirectory):/build - envVars: | + environmentVariables: | CC=clang CMAKE_OPTIONS=-DUSE_HTTPS=mbedTLS -DSHA1_BACKEND=mbedTLS LEAK_CHECK=valgrind - workDir: '/build' - containerCommand: '/src/ci/build.sh' - detached: false - - task: Docker@0 - displayName: Test - inputs: - action: 'Run an image' - imageName: 'libgit2/trusty-mbedtls:latest' - volumes: | - $(Build.SourcesDirectory):/src - $(Build.BinariesDirectory):/build - envVars: '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' @@ -169,65 +63,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)' @@ -235,26 +94,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)' @@ -266,19 +113,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 |