From 179fba51f51e4c2776028336f6a00c4f7b7bf176 Mon Sep 17 00:00:00 2001 From: "Jordan Maples [MSFT]" <49793787+JordanMaples@users.noreply.github.com> Date: Wed, 28 Oct 2020 16:35:49 -0700 Subject: [PATCH] Azure pipeline (#8) (#943) --- azure-pipelines.yml | 68 +++++++++++++++++++++++++++++++++++++++++++++ pipelines/jobs.yml | 26 +++++++++++++++++ pipelines/steps.yml | 17 ++++++++++++ 3 files changed, 111 insertions(+) create mode 100644 azure-pipelines.yml create mode 100644 pipelines/jobs.yml create mode 100644 pipelines/steps.yml diff --git a/azure-pipelines.yml b/azure-pipelines.yml new file mode 100644 index 0000000..47c29c1 --- /dev/null +++ b/azure-pipelines.yml @@ -0,0 +1,68 @@ +trigger: + - master + +pr: + autoCancel: true + +# GCC +stages: +- stage: GCC + dependsOn: [] + variables: + - name: CC + value: gcc + - name: CXX + value: g++ + jobs: + - template: ./pipelines/jobs.yml + parameters: + jobName: 'Validate GCC latest' + imageName: ubuntu-20.04 + - template: ./pipelines/jobs.yml + parameters: + jobName: 'Validate GCC Previous' + imageName: ubuntu-18.04 + +# Clang +- stage: Clang + dependsOn: [] + variables: + - name: CC + value: clang + - name: CXX + value: clang++ + jobs: + - template: ./pipelines/jobs.yml + parameters: + jobName: 'Validate Clang latest' + imageName: ubuntu-20.04 + - template: ./pipelines/jobs.yml + parameters: + jobName: 'Validate Clang Previous' + imageName: ubuntu-18.04 + +# MSVC +- stage: MSVC + dependsOn: [] + jobs: + - template: ./pipelines/jobs.yml + parameters: + jobName: 'Validate MSVC latest' + imageName: windows-latest + - template: ./pipelines/jobs.yml + parameters: + jobName: 'Validate MSVC Previous' + imageName: vs2017-win2016 + +# Apple-Clang +- stage: Apple_Clang + dependsOn: [] + jobs: + - template: ./pipelines/jobs.yml + parameters: + jobName: 'Validate Apple-Clang latest' + imageName: macos-10.15 + - template: ./pipelines/jobs.yml + parameters: + jobName: 'Validate Apple-Clang Previous' + imageName: macos-10.14 diff --git a/pipelines/jobs.yml b/pipelines/jobs.yml new file mode 100644 index 0000000..dad2414 --- /dev/null +++ b/pipelines/jobs.yml @@ -0,0 +1,26 @@ +parameters: + jobName: '' + imageName: '' + +jobs: +- job: + displayName: ${{ parameters.imageName }} + pool: + vmImage: ${{ parameters.imageName }} + strategy: + matrix: + 14_debug: + GSL_CXX_STANDARD: '14' + BUILD_TYPE: 'Debug' + 14_release: + GSL_CXX_STANDARD: '14' + BUILD_TYPE: 'Release' + 17_debug: + GSL_CXX_STANDARD: '17' + BUILD_TYPE: 'Debug' + 17_release: + GSL_CXX_STANDARD: '17' + BUILD_TYPE: 'Release' + continueOnError: false + steps: + - template: ./steps.yml diff --git a/pipelines/steps.yml b/pipelines/steps.yml new file mode 100644 index 0000000..9557ab7 --- /dev/null +++ b/pipelines/steps.yml @@ -0,0 +1,17 @@ +steps: + - task: CMake@1 + name: Configure + inputs: + workingDirectory: build + cmakeArgs: '-DCMAKE_CXX_STANDARD=$(GSL_CXX_STANDARD) -DCMAKE_BUILD_TYPE=$(BUILD_TYPE) .. ' + + - task: CMake@1 + name: Build + inputs: + workingDirectory: build + cmakeArgs: '--build . ' + + - script: ctest . --output-on-failure --no-compress-output + name: CTest + workingDirectory: build + failOnStderr: true