diff --git a/.azure-pipelines/pipelines.yml b/.azure-pipelines/pipelines.yml index 1bb07077b07c5..b5f475f3aaed8 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 @@ -84,6 +85,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 +95,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 @@ -349,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" @@ -359,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: @@ -372,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" @@ -395,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: @@ -439,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: @@ -472,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: @@ -775,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" @@ -824,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" @@ -863,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: