From cb1ed641c857de5d8dd6bcd37f1cb473164fb5ee Mon Sep 17 00:00:00 2001 From: Jerome Laban Date: Fri, 22 Oct 2021 15:58:25 -0400 Subject: [PATCH 1/3] ci: Improve build performance by caching the gitversion results --- .vsts-ci.yml | 4 ++++ build/ci/.azure-devops-android-tests.yml | 4 ++-- build/ci/.azure-devops-docs.yml | 2 +- build/ci/.azure-devops-ios-tests.yml | 2 +- build/ci/.azure-devops-macos.yml | 2 +- build/ci/.azure-devops-package-generic.yml | 2 +- build/ci/.azure-devops-package-net6-win.yml | 2 +- build/ci/.azure-devops-pipeline-validations.yml | 16 ++++++++++++++++ .../.azure-devops-samplesapp-uitests-build.yml | 2 +- build/ci/.azure-devops-skia-tests.yml | 2 +- build/ci/.azure-devops-uap.yml | 2 +- build/ci/.azure-devops-unit-tests.yml | 2 +- build/ci/.azure-devops-vs2022-vsix.yml | 2 +- ....azure-devops-wasm-cs9-preview-validation.yml | 2 +- build/ci/.azure-devops-wasm-uitests.yml | 2 +- build/ci/templates/gitversion.yml | 12 ++++++++++++ 16 files changed, 46 insertions(+), 14 deletions(-) create mode 100644 build/ci/.azure-devops-pipeline-validations.yml diff --git a/.vsts-ci.yml b/.vsts-ci.yml index 4d0aeff33c6f..5515f56ab527 100644 --- a/.vsts-ci.yml +++ b/.vsts-ci.yml @@ -46,6 +46,10 @@ jobs: parameters: vmImage: '$(linuxVMImage)' +- template: build/ci/.azure-devops-pipeline-validations.yml + parameters: + vmImage: '$(linuxVMImage)' + - template: build/ci/.azure-devops-package-generic.yml parameters: poolName: '$(windowsScaledPool)' diff --git a/build/ci/.azure-devops-android-tests.yml b/build/ci/.azure-devops-android-tests.yml index 8c3213f438a2..3810b0a9a9e6 100644 --- a/build/ci/.azure-devops-android-tests.yml +++ b/build/ci/.azure-devops-android-tests.yml @@ -12,7 +12,7 @@ jobs: pool: vmImage: ${{ parameters.vmMacOSImage }} - dependsOn: Commitsar + dependsOn: Pipeline_Validations variables: CI_Build: true @@ -56,7 +56,7 @@ jobs: pool: vmImage: ${{ parameters.vmMacOSImage }} - dependsOn: Commitsar + dependsOn: Pipeline_Validations variables: CI_Build: true diff --git a/build/ci/.azure-devops-docs.yml b/build/ci/.azure-devops-docs.yml index abb8972129d3..578098f3da6f 100644 --- a/build/ci/.azure-devops-docs.yml +++ b/build/ci/.azure-devops-docs.yml @@ -4,7 +4,7 @@ parameters: jobs: - job: Documentation displayName: 'Documentation WebSite' - dependsOn: Commitsar + dependsOn: Pipeline_Validations pool: vmImage: ${{ parameters.vmImage }} diff --git a/build/ci/.azure-devops-ios-tests.yml b/build/ci/.azure-devops-ios-tests.yml index 93a564220bf1..0d3346fd6399 100644 --- a/build/ci/.azure-devops-ios-tests.yml +++ b/build/ci/.azure-devops-ios-tests.yml @@ -9,7 +9,7 @@ jobs: - job: iOS_Build displayName: 'iOS Samples App UI Tests (Build)' - dependsOn: Commitsar + dependsOn: Pipeline_Validations pool: vmImage: ${{ parameters.vmImage }} diff --git a/build/ci/.azure-devops-macos.yml b/build/ci/.azure-devops-macos.yml index 665154d242bd..03d1dcd866c3 100644 --- a/build/ci/.azure-devops-macos.yml +++ b/build/ci/.azure-devops-macos.yml @@ -14,7 +14,7 @@ jobs: NUGET_PACKAGES: $(build.sourcesdirectory)/.nuget XCODE_ROOT: /Applications/Xcode_10.3.app - dependsOn: Commitsar + dependsOn: Pipeline_Validations pool: vmImage: ${{ parameters.vmImage }} diff --git a/build/ci/.azure-devops-package-generic.yml b/build/ci/.azure-devops-package-generic.yml index dc54690cae77..956d7f53b000 100644 --- a/build/ci/.azure-devops-package-generic.yml +++ b/build/ci/.azure-devops-package-generic.yml @@ -6,7 +6,7 @@ jobs: displayName: 'Build Generic Binaries' timeoutInMinutes: 90 - dependsOn: Commitsar + dependsOn: Pipeline_Validations pool: ${{ parameters.poolName }} diff --git a/build/ci/.azure-devops-package-net6-win.yml b/build/ci/.azure-devops-package-net6-win.yml index 43f88d7c3bf7..5bad5e12596c 100644 --- a/build/ci/.azure-devops-package-net6-win.yml +++ b/build/ci/.azure-devops-package-net6-win.yml @@ -8,7 +8,7 @@ jobs: pool: ${{ parameters.poolName }} - dependsOn: Commitsar + dependsOn: Pipeline_Validations strategy: matrix: diff --git a/build/ci/.azure-devops-pipeline-validations.yml b/build/ci/.azure-devops-pipeline-validations.yml new file mode 100644 index 000000000000..0f576466e50d --- /dev/null +++ b/build/ci/.azure-devops-pipeline-validations.yml @@ -0,0 +1,16 @@ +parameters: + vmImage: '' + +jobs: +- job: Pipeline_Validations + displayName: 'Pipeline Validations' + dependsOn: Commitsar + + pool: + vmImage: ${{ parameters.vmImage }} + + steps: + - checkout: self + clean: true + + - template: templates/gitversion.yml diff --git a/build/ci/.azure-devops-samplesapp-uitests-build.yml b/build/ci/.azure-devops-samplesapp-uitests-build.yml index f6c6980fa05d..fa1334cfc264 100644 --- a/build/ci/.azure-devops-samplesapp-uitests-build.yml +++ b/build/ci/.azure-devops-samplesapp-uitests-build.yml @@ -8,7 +8,7 @@ jobs: pool: vmImage: ${{ parameters.vmImage }} - dependsOn: Commitsar + dependsOn: Pipeline_Validations variables: NUGET_PACKAGES: $(build.sourcesdirectory)/.nuget diff --git a/build/ci/.azure-devops-skia-tests.yml b/build/ci/.azure-devops-skia-tests.yml index b8ecc46c4ec6..d046396446a7 100644 --- a/build/ci/.azure-devops-skia-tests.yml +++ b/build/ci/.azure-devops-skia-tests.yml @@ -9,7 +9,7 @@ jobs: pool: vmImage: ${{ parameters.vmImage }} - dependsOn: Commitsar + dependsOn: Pipeline_Validations variables: CombinedConfiguration: Release|Any CPU diff --git a/build/ci/.azure-devops-uap.yml b/build/ci/.azure-devops-uap.yml index 4de20e6d7c06..1d44d1a72a35 100644 --- a/build/ci/.azure-devops-uap.yml +++ b/build/ci/.azure-devops-uap.yml @@ -8,7 +8,7 @@ jobs: pool: vmImage: ${{ parameters.vmImage }} - dependsOn: Commitsar + dependsOn: Pipeline_Validations variables: CombinedConfiguration: Release|Any CPU diff --git a/build/ci/.azure-devops-unit-tests.yml b/build/ci/.azure-devops-unit-tests.yml index 49bbd3dc8c50..b36f2734c332 100644 --- a/build/ci/.azure-devops-unit-tests.yml +++ b/build/ci/.azure-devops-unit-tests.yml @@ -9,7 +9,7 @@ jobs: pool: vmImage: ${{ parameters.vmImage }} - dependsOn: Commitsar + dependsOn: Pipeline_Validations strategy: matrix: diff --git a/build/ci/.azure-devops-vs2022-vsix.yml b/build/ci/.azure-devops-vs2022-vsix.yml index b46a1fa796e0..0987979e5952 100644 --- a/build/ci/.azure-devops-vs2022-vsix.yml +++ b/build/ci/.azure-devops-vs2022-vsix.yml @@ -12,7 +12,7 @@ jobs: CombinedConfiguration: Release|Any CPU CI_Build: true - dependsOn: Commitsar + dependsOn: Pipeline_Validations steps: - checkout: self diff --git a/build/ci/.azure-devops-wasm-cs9-preview-validation.yml b/build/ci/.azure-devops-wasm-cs9-preview-validation.yml index 75b33cbbb869..0a0a6b01541d 100644 --- a/build/ci/.azure-devops-wasm-cs9-preview-validation.yml +++ b/build/ci/.azure-devops-wasm-cs9-preview-validation.yml @@ -9,7 +9,7 @@ jobs: pool: vmImage: ${{ parameters.vmImage }} - dependsOn: Commitsar + dependsOn: Pipeline_Validations variables: NUGET_PACKAGES: $(build.sourcesdirectory)/.nuget diff --git a/build/ci/.azure-devops-wasm-uitests.yml b/build/ci/.azure-devops-wasm-uitests.yml index be957eea611a..fd1311298878 100644 --- a/build/ci/.azure-devops-wasm-uitests.yml +++ b/build/ci/.azure-devops-wasm-uitests.yml @@ -6,7 +6,7 @@ jobs: displayName: 'WebAssembly UI Tests (Build)' container: nv-bionic-wasm - dependsOn: Commitsar + dependsOn: Pipeline_Validations pool: vmImage: ${{ parameters.vmImage }} diff --git a/build/ci/templates/gitversion.yml b/build/ci/templates/gitversion.yml index 90e752a1c030..ac478bf90bba 100644 --- a/build/ci/templates/gitversion.yml +++ b/build/ci/templates/gitversion.yml @@ -3,6 +3,12 @@ parameters: steps: + - task: DownloadBuildArtifacts@0 + displayName: 'Download GitVersion Cache' + inputs: + artifactName: gitversion_cache + downloadPath: '$(build.sourcesdirectory)/.git' + # This step changes the PR version ID so that produced nuget packages can be tied # to specific builds. This can be used to create canaries from PR artifacts. - powershell: | @@ -55,3 +61,9 @@ steps: condition: eq(variables['Build.Reason'], 'PullRequest') displayName: Update GITVERSION.SemVer for PullRequests + + - task: PublishBuildArtifacts@1 + inputs: + PathtoPublish: $(build.sourcesdirectory)/.git/gitversion_cache + ArtifactName: gitversion_cache + ArtifactType: Container From 7d157075e1ffbbfae7111eaa8782cac4c43af300 Mon Sep 17 00:00:00 2001 From: Jerome Laban Date: Fri, 22 Oct 2021 16:03:39 -0400 Subject: [PATCH 2/3] chore: Adjust parameters --- build/ci/.azure-devops-pipeline-validations.yml | 2 ++ build/ci/templates/gitversion.yml | 2 ++ 2 files changed, 4 insertions(+) diff --git a/build/ci/.azure-devops-pipeline-validations.yml b/build/ci/.azure-devops-pipeline-validations.yml index 0f576466e50d..eaa0e168f82a 100644 --- a/build/ci/.azure-devops-pipeline-validations.yml +++ b/build/ci/.azure-devops-pipeline-validations.yml @@ -14,3 +14,5 @@ jobs: clean: true - template: templates/gitversion.yml + parameters: + skipCacheDownload: true diff --git a/build/ci/templates/gitversion.yml b/build/ci/templates/gitversion.yml index ac478bf90bba..a02d8d1a3633 100644 --- a/build/ci/templates/gitversion.yml +++ b/build/ci/templates/gitversion.yml @@ -1,9 +1,11 @@ parameters: dotnetInstallationPath: '' + skipCacheDownload: '' steps: - task: DownloadBuildArtifacts@0 + condition: ne('${{parameters.skipCacheDownload}}', 'true') displayName: 'Download GitVersion Cache' inputs: artifactName: gitversion_cache From 094834fe8f5168e65b72efde8ab293f6b9ae7454 Mon Sep 17 00:00:00 2001 From: Jerome Laban Date: Fri, 22 Oct 2021 16:28:13 -0400 Subject: [PATCH 3/3] chore: per-platform commit id --- build/ci/.azure-devops-pipeline-validations.yml | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/build/ci/.azure-devops-pipeline-validations.yml b/build/ci/.azure-devops-pipeline-validations.yml index eaa0e168f82a..923a40ac3778 100644 --- a/build/ci/.azure-devops-pipeline-validations.yml +++ b/build/ci/.azure-devops-pipeline-validations.yml @@ -6,8 +6,19 @@ jobs: displayName: 'Pipeline Validations' dependsOn: Commitsar + strategy: + matrix: + Ubuntu: + localVmImage: 'ubuntu-latest' + + Windows: + localVmImage: 'windows-latest' + + macOS: + localVmImage: 'macos-latest' + pool: - vmImage: ${{ parameters.vmImage }} + vmImage: $(localVmImage) steps: - checkout: self