From b54bb61855dd2234e8664b2c72f8913432a89802 Mon Sep 17 00:00:00 2001 From: Ryan Northey Date: Fri, 9 Dec 2022 09:44:24 +0000 Subject: [PATCH 1/4] ci: Add `examplesOnly` condition Signed-off-by: Ryan Northey --- .azure-pipelines/pipelines.yml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/.azure-pipelines/pipelines.yml b/.azure-pipelines/pipelines.yml index 1bb07077b07c5..6b8450978d066 100644 --- a/.azure-pipelines/pipelines.yml +++ b/.azure-pipelines/pipelines.yml @@ -84,6 +84,7 @@ stages: CHANGED_PATH_COUNT=$(echo $CHANGED_PATHS | jq '. | length') CHANGED_MOBILE_ONLY=false CHANGED_DOCS_ONLY=false + CHANGED_EXAMPLES_ONLY=false CHANGED_MOBILE=$(echo $CHANGED_PATHS | jq '. as $A | "mobile" | IN($A[])') if [[ $CHANGED_MOBILE == true && $CHANGED_PATH_COUNT -eq 1 ]]; then @@ -93,15 +94,21 @@ stages: if [[ $CHANGED_DOCS == true && $CHANGED_PATH_COUNT -eq 1 ]]; then CHANGED_DOCS_ONLY=true fi + CHANGED_EXAMPLES=$(echo $CHANGED_PATHS | jq '. as $A | "examples" | IN($A[])') + if [[ $CHANGED_EXAMPLES == true && $CHANGED_PATH_COUNT -eq 1 ]]; then + CHANGED_EXAMPLES_ONLY=true + fi echo "##vso[task.setvariable variable=mobileOnly;isoutput=true]${CHANGED_MOBILE_ONLY}" echo "##vso[task.setvariable variable=docsOnly;isoutput=true]${CHANGED_DOCS_ONLY}" + echo "##vso[task.setvariable variable=examplesOnly;isoutput=true]${CHANGED_EXAMPLES_ONLY}" displayName: "Detect repo changes" workingDirectory: $(Build.SourcesDirectory) name: changed - bash: | echo "env.outputs['changed.mobileOnly']: $(changed.mobileOnly)" echo "env.outputs['changed.docsOnly']: $(changed.docsOnly)" + echo "env.outputs['changed.examplesOnly']: $(changed.examplesOnly)" displayName: "Print build environment" - stage: precheck From 330c5ae423237c351a9f46b150adbcbd31d017d7 Mon Sep 17 00:00:00 2001 From: Ryan Northey Date: Tue, 13 Dec 2022 14:47:45 +0000 Subject: [PATCH 2/4] add-exclusions Signed-off-by: Ryan Northey --- .azure-pipelines/pipelines.yml | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/.azure-pipelines/pipelines.yml b/.azure-pipelines/pipelines.yml index 6b8450978d066..aa767d86f10dd 100644 --- a/.azure-pipelines/pipelines.yml +++ b/.azure-pipelines/pipelines.yml @@ -73,6 +73,7 @@ stages: if [[ $(Build.Reason) != "PullRequest" ]]; then echo "##vso[task.setvariable variable=mobileOnly;isoutput=true]false" echo "##vso[task.setvariable variable=docsOnly;isoutput=true]false" + echo "##vso[task.setvariable variable=examplesOnly;isoutput=true]false" exit 0 fi @@ -356,7 +357,7 @@ stages: jobs: - job: package_x64 dependsOn: [] - condition: and(not(canceled()), succeeded(), ne(stageDependencies.env.repo.outputs['changed.mobileOnly'], 'true'), ne(stageDependencies.env.repo.outputs['changed.docsOnly'], 'true')) + condition: and(not(canceled()), succeeded(), ne(stageDependencies.env.repo.outputs['changed.mobileOnly'], 'true'), ne(stageDependencies.env.repo.outputs['changed.docsOnly'], 'true'), ne(stageDependencies.env.repo.outputs['changed.examplesOnly'], 'true')) timeoutInMinutes: 120 pool: vmImage: "ubuntu-20.04" @@ -366,7 +367,7 @@ stages: ciTarget: bazel.distribution - job: package_arm64 dependsOn: [] - condition: and(not(canceled()), succeeded(), ne(stageDependencies.env.repo.outputs['changed.mobileOnly'], 'true'), ne(stageDependencies.env.repo.outputs['changed.docsOnly'], 'true')) + condition: and(not(canceled()), succeeded(), ne(stageDependencies.env.repo.outputs['changed.mobileOnly'], 'true'), ne(stageDependencies.env.repo.outputs['changed.docsOnly'], 'true'), ne(stageDependencies.env.repo.outputs['changed.examplesOnly'], 'true')) timeoutInMinutes: 120 pool: "arm-large" steps: @@ -379,7 +380,7 @@ stages: bazelBuildExtraOptions: "--sandbox_base=/tmp/sandbox_base" - job: verify_x64 dependsOn: ["package_x64"] - condition: and(not(canceled()), succeeded(), ne(stageDependencies.env.repo.outputs['changed.mobileOnly'], 'true'), ne(stageDependencies.env.repo.outputs['changed.docsOnly'], 'true')) + condition: and(not(canceled()), succeeded(), ne(stageDependencies.env.repo.outputs['changed.mobileOnly'], 'true'), ne(stageDependencies.env.repo.outputs['changed.docsOnly'], 'true'), ne(stageDependencies.env.repo.outputs['changed.examplesOnly'], 'true')) timeoutInMinutes: 120 pool: vmImage: "ubuntu-20.04" @@ -402,7 +403,7 @@ stages: displayName: "Verify packages" - job: verify_arm64 dependsOn: ["package_arm64"] - condition: and(not(canceled()), succeeded(), ne(stageDependencies.env.repo.outputs['changed.mobileOnly'], 'true'), ne(stageDependencies.env.repo.outputs['changed.docsOnly'], 'true')) + condition: and(not(canceled()), succeeded(), ne(stageDependencies.env.repo.outputs['changed.mobileOnly'], 'true'), ne(stageDependencies.env.repo.outputs['changed.docsOnly'], 'true'), ne(stageDependencies.env.repo.outputs['changed.examplesOnly'], 'true')) timeoutInMinutes: 120 pool: "arm-large" steps: @@ -446,7 +447,7 @@ stages: displayName: "linux_x64" dependsOn: [] # Skip checks if only mobile/ or docs/ have changed. - condition: and(not(canceled()), succeeded(), ne(stageDependencies.env.repo.outputs['changed.mobileOnly'], 'true'), ne(stageDependencies.env.repo.outputs['changed.docsOnly'], 'true')) + condition: and(not(canceled()), succeeded(), ne(stageDependencies.env.repo.outputs['changed.mobileOnly'], 'true'), ne(stageDependencies.env.repo.outputs['changed.docsOnly'], 'true'), ne(stageDependencies.env.repo.outputs['changed.examplesOnly'], 'true')) strategy: maxParallel: 3 matrix: @@ -479,7 +480,7 @@ stages: displayName: "linux_x64" dependsOn: [] # Skip checks if only mobile/ or docs/ have changed. - condition: and(not(canceled()), succeeded(), ne(stageDependencies.env.repo.outputs['changed.mobileOnly'], 'true'), ne(stageDependencies.env.repo.outputs['changed.docsOnly'], 'true')) + condition: and(not(canceled()), succeeded(), ne(stageDependencies.env.repo.outputs['changed.mobileOnly'], 'true'), ne(stageDependencies.env.repo.outputs['changed.docsOnly'], 'true'), ne(stageDependencies.env.repo.outputs['changed.examplesOnly'], 'true')) timeoutInMinutes: 180 pool: "x64-large" strategy: @@ -782,7 +783,7 @@ stages: dependsOn: ["env", "precheck"] jobs: - job: test - condition: and(not(canceled()), succeeded(), ne(stageDependencies.env.repo.outputs['changed.mobileOnly'], 'true'), ne(stageDependencies.env.repo.outputs['changed.docsOnly'], 'true')) + condition: and(not(canceled()), succeeded(), ne(stageDependencies.env.repo.outputs['changed.mobileOnly'], 'true'), ne(stageDependencies.env.repo.outputs['changed.docsOnly'], 'true'), ne(stageDependencies.env.repo.outputs['changed.examplesOnly'], 'true')) timeoutInMinutes: 180 pool: vmImage: "macos-11" From 09c44fde17c1dc96c4e825a4628e821a0b081677 Mon Sep 17 00:00:00 2001 From: Ryan Northey Date: Tue, 13 Dec 2022 16:08:19 +0000 Subject: [PATCH 3/4] windows Signed-off-by: Ryan Northey --- .azure-pipelines/pipelines.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.azure-pipelines/pipelines.yml b/.azure-pipelines/pipelines.yml index aa767d86f10dd..99af6ca095165 100644 --- a/.azure-pipelines/pipelines.yml +++ b/.azure-pipelines/pipelines.yml @@ -832,7 +832,7 @@ stages: dependsOn: ["env", "precheck"] jobs: - job: release - condition: and(not(canceled()), succeeded(), ne(stageDependencies.env.repo.outputs['changed.mobileOnly'], 'true'), ne(stageDependencies.env.repo.outputs['changed.docsOnly'], 'true')) + condition: and(not(canceled()), succeeded(), ne(stageDependencies.env.repo.outputs['changed.mobileOnly'], 'true'), ne(stageDependencies.env.repo.outputs['changed.docsOnly'], 'true'), ne(stageDependencies.env.repo.outputs['changed.examplesOnly'], 'true')) timeoutInMinutes: 180 pool: vmImage: "windows-2019" From 3a0be5f4cd8a1ca8067ac90d331bdcd632c0009f Mon Sep 17 00:00:00 2001 From: Ryan Northey Date: Wed, 14 Dec 2022 11:09:22 +0000 Subject: [PATCH 4/4] windows-docker Signed-off-by: Ryan Northey --- .azure-pipelines/pipelines.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.azure-pipelines/pipelines.yml b/.azure-pipelines/pipelines.yml index 99af6ca095165..b5f475f3aaed8 100644 --- a/.azure-pipelines/pipelines.yml +++ b/.azure-pipelines/pipelines.yml @@ -871,7 +871,7 @@ stages: condition: always() - job: docker - condition: and(not(canceled()), succeeded(), ne(stageDependencies.env.repo.outputs['changed.mobileOnly'], 'true'), ne(stageDependencies.env.repo.outputs['changed.docsOnly'], 'true')) + condition: and(not(canceled()), succeeded(), ne(stageDependencies.env.repo.outputs['changed.mobileOnly'], 'true'), ne(stageDependencies.env.repo.outputs['changed.docsOnly'], 'true'), ne(stageDependencies.env.repo.outputs['changed.examplesOnly'], 'true')) strategy: matrix: windows2019: