From 3658df22dbd234c4b56b55c0e291dd86bf300ea6 Mon Sep 17 00:00:00 2001 From: Scott Beddall <45376673+scbedd@users.noreply.github.com> Date: Tue, 12 Mar 2024 15:20:45 -0700 Subject: [PATCH] `1ES Template` Refactor (#5441) * All eng/ folder changes necessary to enable 1es-templates for the azure-sdk-for-cpp * Includes updates to all ci.yml files to reflect new syntax requirements from 1es-template changes to archetype-sdk-client --- .vscode/cspell.json | 10 + .../templates/jobs/archetype-sdk-client.yml | 33 +- eng/pipelines/templates/jobs/ci.tests.yml | 41 +- .../templates/jobs/cmake-generate-jobs.yml | 8 +- .../templates/jobs/cmake-generate.tests.yml | 14 +- eng/pipelines/templates/jobs/live.tests.yml | 53 ++- .../stages/archetype-cpp-release.yml | 20 +- .../templates/stages/archetype-sdk-client.yml | 377 ++++++++++-------- .../templates/stages/archetype-sdk-tests.yml | 4 +- .../stages/platform-matrix-cmakegenerate.json | 12 +- .../platform-matrix-cmakesourcegenerate.json | 12 +- .../stages/platform-matrix-live.json | 24 +- .../stages/platform-matrix-quick.json | 4 +- .../templates/stages/platform-matrix.json | 32 +- eng/pipelines/templates/variables/image.yml | 33 ++ eng/scripts/Get-BinarySizes.ps1 | 18 +- sdk/attestation/ci.yml | 4 +- sdk/core/ci.yml | 4 +- sdk/eventhubs/ci.yml | 4 +- sdk/identity/ci.yml | 4 +- sdk/keyvault/ci.yml | 4 +- sdk/storage/ci.yml | 4 +- sdk/tables/ci.yml | 4 +- sdk/template/ci.yml | 4 +- 24 files changed, 427 insertions(+), 300 deletions(-) create mode 100644 eng/pipelines/templates/variables/image.yml diff --git a/.vscode/cspell.json b/.vscode/cspell.json index 7e85734a9..8314284cb 100644 --- a/.vscode/cspell.json +++ b/.vscode/cspell.json @@ -112,6 +112,7 @@ "Ekus", "EKUs", "Entra", + "espt", "euap", "Favicon", "fibonacci", @@ -144,10 +145,15 @@ "Kouhei", "lcov", "LIBCMTD", + "LINUXNEXTVMIMAGE", + "LINUXOS", + "LINUXVMIMAGE", "Lohmann", "LPBYTE", "LPSTR", "LPWSTR", + "MACVMIMAGE", + "mkdirp", "MAKELANGID", "mbedtls", "mchelnokov", @@ -191,6 +197,7 @@ "pkcs", "Pkcs", "pscredential", + "psscriptanalyzer", "PUCHAR", "PVOID", "pwsh", @@ -252,6 +259,9 @@ "westus", "Wextra", "Wgnu", + "WINDOWSOS", + "WINDOWSPREVIOUSVMIMAGE", + "WINDOWSVMIMAGE", "Wunused", "xbox", "Xclang", diff --git a/eng/pipelines/templates/jobs/archetype-sdk-client.yml b/eng/pipelines/templates/jobs/archetype-sdk-client.yml index 848bab457..aca35023a 100644 --- a/eng/pipelines/templates/jobs/archetype-sdk-client.yml +++ b/eng/pipelines/templates/jobs/archetype-sdk-client.yml @@ -52,7 +52,7 @@ parameters: default: true jobs: - - template: /eng/common/pipelines/templates/jobs/archetype-sdk-tests-generate.yml + - template: /eng/common/pipelines/templates/jobs/generate-job-matrix.yml parameters: GenerateJobName: ${{ parameters.JobName }}_generate_matrix MatrixConfigs: @@ -61,6 +61,8 @@ jobs: Selection: all GenerateVMJobs: true JobTemplatePath: /eng/pipelines/templates/jobs/ci.tests.yml + OsVmImage: $(LINUXVMIMAGE) + Pool: $(LINUXPOOL) AdditionalParameters: DisplayName: ${{ parameters.JobName }} Artifacts: ${{ parameters.Artifacts }} @@ -82,8 +84,9 @@ jobs: - job: displayName: Create API Review for ${{ artifact.name }} pool: - name: azsdk-pool-mms-win-2022-general - vmImage: windows-2022 + name: $(WINDOWSPOOL) + image: $(WINDOWSVMIMAGE) + os: windows steps: - task: Powershell@2 inputs: @@ -141,8 +144,9 @@ jobs: - job: GenerateReleaseArtifacts pool: - name: azsdk-pool-mms-win-2022-general - vmImage: windows-2022 + name: $(WINDOWSPOOL) + image: $(WINDOWSVMIMAGE) + os: windows variables: VCPKG_DEFAULT_TRIPLET: 'x64-windows-static' Package.EnableSBOMSigning: true @@ -328,17 +332,14 @@ jobs: continueOnError: true condition: and(succeeded(), eq(variables['VerifyChangeLogForRelease'], 'true')) - - task: PublishPipelineArtifact@1 - inputs: - artifactName: packages - path: $(Build.ArtifactStagingDirectory)/packages + - template: /eng/common/pipelines/templates/steps/publish-1es-artifact.yml + parameters: + ArtifactPath: $(Build.ArtifactStagingDirectory)/packages + ArtifactName: packages - # After all docs artifacts are generated publish docs artifacts - - task: PublishPipelineArtifact@1 - inputs: - artifactName: docs - path: $(Build.ArtifactStagingDirectory)/docs + - template: /eng/common/pipelines/templates/steps/publish-1es-artifact.yml + parameters: + ArtifactPath: $(Build.ArtifactStagingDirectory)/docs + ArtifactName: docs - template: /eng/common/pipelines/templates/steps/eng-common-workflow-enforcer.yml - - - template: /eng/pipelines/templates/steps/generate-and-publish-sbom.yml diff --git a/eng/pipelines/templates/jobs/ci.tests.yml b/eng/pipelines/templates/jobs/ci.tests.yml index 74844e382..c190cfc2e 100644 --- a/eng/pipelines/templates/jobs/ci.tests.yml +++ b/eng/pipelines/templates/jobs/ci.tests.yml @@ -55,10 +55,12 @@ parameters: - name: DisplayName type: string default: Validate - + - name: OSName + type: string + default: '' jobs: - - job: + - job: ${{ parameters.DisplayName }}_${{ parameters.OSName }} displayName: ${{ parameters.DisplayName }} dependsOn: ${{ parameters.DependsOn }} condition: and(succeededOrFailed(), ne(variables['Skip.Test'], 'true'), ne(${{ parameters.Matrix }}, '{}')) @@ -66,8 +68,14 @@ jobs: matrix: $[ ${{ parameters.Matrix }} ] maxParallel: 12 pool: - vmImage: $(OSVmImage) name: $(Pool) + # 1es pipeline templates converts `image` to demands: ImageOverride under the hood + # which is incompatible with image selection in the default non-1es hosted pools + ${{ if eq(parameters.OSName, 'macOS') }}: + vmImage: $(OSVmImage) + ${{ else }}: + image: $(OSVmImage) + os: ${{ parameters.OSName }} variables: - name: CMOCKA_XML_FILE value: "%g-test-results.xml" @@ -99,7 +107,7 @@ jobs: steps: - template: /eng/common/pipelines/templates/steps/verify-agent-os.yml parameters: - AgentImage: $(OsVmImage) + AgentImage: ${{ parameters.OSName }} - template: /eng/pipelines/templates/steps/fix-1es-image-apt-azure-sources.yml @@ -320,23 +328,10 @@ jobs: condition: eq(variables['PublishMapFiles'], 'true') displayName: Stage map files - - task: PublishPipelineArtifact@1 - inputs: - artifactName: map-files-$(MapFileArtifactName) - path: $(Build.ArtifactStagingDirectory) - condition: eq(variables['PublishMapFiles'], 'true') - displayName : Publish map file artifacts - - - pwsh: | - $artifactName = "$(Agent.JobName)" - $parts = $artifactName -split ' ' - if ($parts[1]) { - $artifactName = $parts[1] - } - Write-Host "##vso[task.setvariable variable=BomArtifactName;]$artifactName" - displayName: Set bom file artifact name - condition: succeededOrFailed() - - - template: /eng/pipelines/templates/steps/generate-and-publish-sbom.yml + - template: /eng/common/pipelines/templates/steps/publish-1es-artifact.yml parameters: - BomArtifactName: $(BomArtifactName) + ArtifactPath: $(Build.ArtifactStagingDirectory) + ArtifactName: map-files-$(MapFileArtifactName) + CustomCondition: eq(variables['PublishMapFiles'], 'true') + SbomEnabled: false + diff --git a/eng/pipelines/templates/jobs/cmake-generate-jobs.yml b/eng/pipelines/templates/jobs/cmake-generate-jobs.yml index 7630de421..07001d6f8 100644 --- a/eng/pipelines/templates/jobs/cmake-generate-jobs.yml +++ b/eng/pipelines/templates/jobs/cmake-generate-jobs.yml @@ -19,7 +19,7 @@ parameters: default: 120 jobs: -- template: /eng/common/pipelines/templates/jobs/archetype-sdk-tests-generate.yml +- template: /eng/common/pipelines/templates/jobs/generate-job-matrix.yml parameters: MatrixConfigs: - Name: base @@ -27,13 +27,15 @@ jobs: Selection: all GenerateVMJobs: true JobTemplatePath: /eng/pipelines/templates/jobs/cmake-generate.tests.yml + OsVmImage: $(LINUXVMIMAGE) + Pool: $(LINUXPOOL) GenerateJobName: generate_matrix_cmake AdditionalParameters: Artifacts: ${{ parameters.Artifacts }} ServiceDirectory: ${{ parameters.ServiceDirectory }} CMakeTestOptions: ${{ parameters.CMakeTestOptions }} -- template: /eng/common/pipelines/templates/jobs/archetype-sdk-tests-generate.yml +- template: /eng/common/pipelines/templates/jobs/generate-job-matrix.yml parameters: MatrixConfigs: - Name: base @@ -41,6 +43,8 @@ jobs: Selection: all GenerateVMJobs: true JobTemplatePath: /eng/pipelines/templates/jobs/cmake-generate.tests.yml + OsVmImage: $(LINUXVMIMAGE) + Pool: $(LINUXPOOL) GenerateJobName: generate_matrix_cmake_source AdditionalParameters: Artifacts: ${{ parameters.ArtifactsSource }} diff --git a/eng/pipelines/templates/jobs/cmake-generate.tests.yml b/eng/pipelines/templates/jobs/cmake-generate.tests.yml index 67c0382ae..74c820af4 100644 --- a/eng/pipelines/templates/jobs/cmake-generate.tests.yml +++ b/eng/pipelines/templates/jobs/cmake-generate.tests.yml @@ -31,9 +31,13 @@ parameters: - name: TimeoutInMinutes type: number default: 120 + - name: OSName + type: string + default: '' jobs: -- job: ${{ parameters.JobName }} +- job: + displayName: ${{ parameters.JobName }} timeoutInMinutes: ${{ parameters.TimeoutInMinutes }} condition: >- and( @@ -48,7 +52,13 @@ jobs: pool: name: $(Pool) - vmImage: $(OSVmImage) + # 1es pipeline templates converts `image` to demands: ImageOverride under the hood + # which is incompatible with image selection in the default non-1es hosted pools + ${{ if eq(parameters.OSName, 'macOS') }}: + vmImage: $(OSVmImage) + ${{ else }}: + image: $(OSVmImage) + os: ${{ parameters.OSName }} ${{ if eq(parameters.UsePlatformContainer, 'true') }}: # Add a default so the job doesn't fail when the matrix is empty diff --git a/eng/pipelines/templates/jobs/live.tests.yml b/eng/pipelines/templates/jobs/live.tests.yml index 0d07d04ba..3c3d25c0d 100644 --- a/eng/pipelines/templates/jobs/live.tests.yml +++ b/eng/pipelines/templates/jobs/live.tests.yml @@ -39,15 +39,26 @@ parameters: - name: PostTestSteps type: stepList default: [] +- name: OSName + type: string + default: '' jobs: -- job: ValidateLive +- job: + displayName: ValidateLive dependsOn: ${{ parameters.DependsOn }} condition: and(ne(variables['Skip.LiveTest'], 'true'), ne(${{ parameters.Matrix }}, '{}')) timeoutInMinutes: ${{ parameters.TimeoutInMinutes }} pool: name: $(Pool) - vmImage: $(OSVmImage) + # 1es pipeline templates converts `image` to demands: ImageOverride under the hood + # which is incompatible with image selection in the default non-1es hosted pools + ${{ if eq(parameters.OSName, 'macOS') }}: + vmImage: $(OSVmImage) + ${{ else }}: + image: $(OSVmImage) + os: ${{ parameters.OSName }} + ${{ if eq(parameters.UsePlatformContainer, 'true') }}: # Add a default so the job doesn't fail when the matrix is empty @@ -58,18 +69,30 @@ jobs: matrix: $[ ${{ parameters.Matrix }} ] variables: - CMOCKA_XML_FILE: "%g-test-results.xml" - CMOCKA_MESSAGE_OUTPUT: "xml" - AZURE_ENABLE_STATIC_ANALYSIS: 1 - BuildArgs: "" - VcpkgArgs: "" - WindowsCtestConfig: "" - CmakeEnvArg: "" - CmakeArgs: "" - AZURE_TEST_MODE: "LIVE" - AZURE_LOG_LEVEL: "verbose" - # Surface the ServiceDirectory parameter as an environment variable so tests can take advantage of it. - AZURE_SERVICE_DIRECTORY: ${{ parameters.ServiceDirectory }} + - template: /eng/pipelines/templates/variables/image.yml@self + - name: CMOCKA_XML_FILE + value: "%g-test-results.xml" + - name: CMOCKA_MESSAGE_OUTPUT + value: "xml" + - name: AZURE_ENABLE_STATIC_ANALYSIS + value: 1 + - name: BuildArgs + value: "" + - name: VcpkgArgs + value: "" + - name: WindowsCtestConfig + value: "" + - name: CmakeEnvArg + value: "" + - name: CmakeArgs + value: "" + - name: AZURE_TEST_MODE + value: "LIVE" + - name: AZURE_LOG_LEVEL + value: "verbose" + # Surface the ServiceDirectory parameter as an environment variable so tests can take advantage of it. + - name: AZURE_SERVICE_DIRECTORY + value: ${{ parameters.ServiceDirectory }} steps: - checkout: self @@ -152,7 +175,7 @@ jobs: export AZURE_CLIENT_ID=$(${{parameters.ServiceDirectory}}_CLIENT_ID) export AZURE_TENANT_ID=$(${{parameters.ServiceDirectory}}_TENANT_ID) export AZURE_CLIENT_SECRET=$(${{parameters.ServiceDirectory}}_CLIENT_SECRET) - + ctest $(WindowsCtestConfig) -V --tests-regex "${{ parameters.CtestRegex }}" --no-compress-output -T Test workingDirectory: build displayName: ctest diff --git a/eng/pipelines/templates/stages/archetype-cpp-release.yml b/eng/pipelines/templates/stages/archetype-cpp-release.yml index 4962c3807..a485d4858 100644 --- a/eng/pipelines/templates/stages/archetype-cpp-release.yml +++ b/eng/pipelines/templates/stages/archetype-cpp-release.yml @@ -24,7 +24,8 @@ stages: pool: name: azsdk-pool-mms-win-2022-general - vmImage: windows-2022 + image: azsdk-pool-mms-win-2022-1espt + os: windows strategy: runOnce: @@ -65,7 +66,8 @@ stages: pool: name: azsdk-pool-mms-win-2022-general - vmImage: windows-2022 + image: azsdk-pool-mms-win-2022-1espt + os: windows strategy: runOnce: @@ -95,7 +97,8 @@ stages: dependsOn: TagRepository pool: name: azsdk-pool-mms-win-2022-general - vmImage: windows-2022 + image: azsdk-pool-mms-win-2022-1espt + os: windows variables: VcpkgPrRepoOwner: Microsoft @@ -226,7 +229,8 @@ stages: pool: name: azsdk-pool-mms-win-2022-general - vmImage: windows-2022 + image: azsdk-pool-mms-win-2022-1espt + os: windows strategy: runOnce: @@ -255,13 +259,17 @@ stages: eq(variables['Build.Reason'],'Schedule') ) ) + variables: + - template: /eng/pipelines/templates/variables/image.yml + jobs: - job: PublishDailyVcpkg displayName: Publish to vcpkg daily branch pool: - name: azsdk-pool-mms-win-2022-general - vmImage: windows-2022 + name: $(WINDOWSPOOL) + image: $(WINDOWSVMIMAGE) + os: windows steps: - checkout: self diff --git a/eng/pipelines/templates/stages/archetype-sdk-client.yml b/eng/pipelines/templates/stages/archetype-sdk-client.yml index 810cd8f09..5d7840319 100644 --- a/eng/pipelines/templates/stages/archetype-sdk-client.yml +++ b/eng/pipelines/templates/stages/archetype-sdk-client.yml @@ -1,173 +1,214 @@ +resources: + repositories: + - repository: 1ESPipelineTemplates + type: git + name: 1ESPipelineTemplates/1ESPipelineTemplates + ref: refs/tags/release + parameters: -- name: ServiceDirectory - type: string - default: not-specified -- name: CtestRegex - type: string - default: .* -- name: CtestExcludeRegex - type: string - default: '' -- name: CoverageEnabled - type: boolean - default: true -- name: LiveTestCtestRegex - type: string - default: '' -- name: Artifacts - type: object - default: [] -- name: ArtifactsSource - type: object - default: [] -- name: CoverageReportPath - type: string - default: 'sdk/*/*/*cov_xml.xml' -- name: LiveTestTimeoutInMinutes - type: number - default: 120 -- name: LineCoverageTarget - type: number - default: 95 -- name: BranchCoverageTarget - type: number - default: 70 -- name: TestEnv - type: object - default: [] -- name: CMakeTestOptions - type: object - default: [] -- name: CMakeSourceTestOptions - type: object - default: [] -- name: Location - type: string - default: '' -- name: CloudConfig - type: object - default: - Public: - SubscriptionConfiguration: $(sub-config-azure-cloud-test-resources) - Preview: - SubscriptionConfiguration: $(sub-config-azure-cloud-test-resources-preview) - Canary: - SubscriptionConfiguration: $(sub-config-azure-cloud-test-resources) - Location: 'eastus2euap' - UsGov: - SubscriptionConfiguration: $(sub-config-gov-test-resources) - China: - SubscriptionConfiguration: $(sub-config-cn-test-resources) -- name: Clouds - type: string - default: Public -- name: SupportedClouds - type: string - default: Public -- name: UnsupportedClouds - type: string - default: '' -- name: PreTestSteps - type: stepList - default: [] -- name: PostTestSteps - type: stepList - default: [] -- name: CMakeGenerationTimeoutInMinutes - type: number - default: 120 + - name: ServiceDirectory + type: string + default: not-specified + - name: CtestRegex + type: string + default: .* + - name: CtestExcludeRegex + type: string + default: '' + - name: CoverageEnabled + type: boolean + default: true + - name: LiveTestCtestRegex + type: string + default: '' + - name: Artifacts + type: object + default: [] + - name: ArtifactsSource + type: object + default: [] + - name: CoverageReportPath + type: string + default: 'sdk/*/*/*cov_xml.xml' + - name: LiveTestTimeoutInMinutes + type: number + default: 120 + - name: LineCoverageTarget + type: number + default: 95 + - name: BranchCoverageTarget + type: number + default: 70 + - name: TestEnv + type: object + default: [] + - name: CMakeTestOptions + type: object + default: [] + - name: CMakeSourceTestOptions + type: object + default: [] + - name: Location + type: string + default: '' + - name: CloudConfig + type: object + default: + Public: + SubscriptionConfiguration: $(sub-config-azure-cloud-test-resources) + Preview: + SubscriptionConfiguration: $(sub-config-azure-cloud-test-resources-preview) + Canary: + SubscriptionConfiguration: $(sub-config-azure-cloud-test-resources) + Location: 'eastus2euap' + UsGov: + SubscriptionConfiguration: $(sub-config-gov-test-resources) + China: + SubscriptionConfiguration: $(sub-config-cn-test-resources) + - name: Clouds + type: string + default: Public + - name: SupportedClouds + type: string + default: Public + - name: UnsupportedClouds + type: string + default: '' + - name: PreTestSteps + type: stepList + default: [] + - name: PostTestSteps + type: stepList + default: [] + - name: CMakeGenerationTimeoutInMinutes + type: number + default: 120 -stages: - - stage: CMakeGeneration - jobs: - - template: /eng/pipelines/templates/jobs/cmake-generate-jobs.yml - parameters: - TimeoutInMinutes: ${{ parameters.CMakeGenerationTimeoutInMinutes }} - ServiceDirectory: ${{ parameters.ServiceDirectory }} - Artifacts: ${{ parameters.Artifacts }} - ArtifactsSource: ${{ parameters.ArtifactsSource }} - CMakeTestOptions: ${{ parameters.CMakeTestOptions }} - CMakeSourceTestOptions: ${{ parameters.CMakeSourceTestOptions }} - - # PrePublishBuild runs a narrower set of fast builds. If these builds pass, - # Integration can launch immediately without awaiting more build and test jobs - - stage: PrePublishBuild - dependsOn: [] - jobs: - - template: /eng/pipelines/templates/jobs/archetype-sdk-client.yml - parameters: - MatrixFile: eng/pipelines/templates/stages/platform-matrix-quick.json - JobName: QuickValidate - ServiceDirectory: ${{ parameters.ServiceDirectory }} - Artifacts: ${{ parameters.Artifacts }} - CtestRegex: ${{ parameters.CtestRegex }} - CtestExcludeRegex: ${{ parameters.CtestExcludeRegex }} - CoverageEnabled: ${{ parameters.CoverageEnabled }} - CoverageReportPath: ${{ parameters.CoverageReportPath }} - LineCoverageTarget: ${{ parameters.LineCoverageTarget }} - BranchCoverageTarget: ${{ parameters.BranchCoverageTarget }} - ${{ if eq(parameters.ServiceDirectory, 'template') }}: - TestPipeline: true - TestEnv: ${{ parameters.TestEnv }} - PreTestSteps: ${{ parameters.PreTestSteps }} - PostTestSteps: ${{ parameters.PostTestSteps }} - RunMetaJobs: true +extends: + ${{ if eq(variables['System.TeamProject'], 'internal') }}: + template: v1/1ES.Official.PipelineTemplate.yml@1ESPipelineTemplates + ${{ else }}: + template: v1/1ES.Unofficial.PipelineTemplate.yml@1ESPipelineTemplates + parameters: + settings: + skipBuildTagsForGitHubPullRequests: true + sdl: + sourceAnalysisPool: + name: azsdk-pool-mms-win-2022-general + image: azsdk-pool-mms-win-2022-1espt + os: windows + eslint: + enabled: false + justificationForDisabling: 'ESLint injected task has failures because it uses an old version of mkdirp. We should not fail for tools not controlled by the repo. See: https://dev.azure.com/azure-sdk/internal/_build/results?buildId=3499746' + psscriptanalyzer: + compiled: true + break: true + policy: M365 + credscan: + suppressionsFile: $(Build.SourcesDirectory)/eng/CredScanSuppression.json + toolVersion: 2.3.12.23 + binskim: + enabled: true + scanOutputDirectoryOnly: true - - stage: Build - dependsOn: [] - jobs: - - template: /eng/pipelines/templates/jobs/archetype-sdk-client.yml - parameters: - MatrixFile: eng/pipelines/templates/stages/platform-matrix.json - JobName: Validate - ServiceDirectory: ${{ parameters.ServiceDirectory }} - Artifacts: ${{ parameters.Artifacts }} - CtestRegex: ${{ parameters.CtestRegex }} - CtestExcludeRegex: ${{ parameters.CtestExcludeRegex }} - CoverageEnabled: ${{ parameters.CoverageEnabled }} - CoverageReportPath: ${{ parameters.CoverageReportPath }} - LineCoverageTarget: ${{ parameters.LineCoverageTarget }} - BranchCoverageTarget: ${{ parameters.BranchCoverageTarget }} - ${{ if eq(parameters.ServiceDirectory, 'template') }}: - TestPipeline: true - TestEnv: ${{ parameters.TestEnv }} - PreTestSteps: ${{ parameters.PreTestSteps }} - PostTestSteps: ${{ parameters.PostTestSteps }} - RunMetaJobs: false + stages: + - stage: CMakeGeneration + variables: + - template: /eng/pipelines/templates/variables/image.yml@self + jobs: + - template: /eng/pipelines/templates/jobs/cmake-generate-jobs.yml@self + parameters: + TimeoutInMinutes: ${{ parameters.CMakeGenerationTimeoutInMinutes }} + ServiceDirectory: ${{ parameters.ServiceDirectory }} + Artifacts: ${{ parameters.Artifacts }} + ArtifactsSource: ${{ parameters.ArtifactsSource }} + CMakeTestOptions: ${{ parameters.CMakeTestOptions }} + CMakeSourceTestOptions: ${{ parameters.CMakeSourceTestOptions }} - - ${{ if and(eq(variables['System.TeamProject'], 'internal'), ne(parameters.LiveTestCtestRegex, '')) }}: - - template: /eng/pipelines/templates/stages/archetype-sdk-tests.yml - # Code coverage is enabled by default for live tests - parameters: - TimeoutInMinutes: ${{ parameters.LiveTestTimeoutInMinutes }} - ServiceDirectory: ${{ parameters.ServiceDirectory }} - CtestRegex: ${{ parameters.LiveTestCtestRegex }} - CoverageReportPath: ${{ parameters.CoverageReportPath }} - Location: ${{ parameters.Location }} - CloudConfig: ${{ parameters.CloudConfig }} - Clouds: ${{ parameters.Clouds }} - SupportedClouds: ${{ parameters.SupportedClouds }} - UnsupportedClouds: ${{ parameters.UnsupportedClouds }} - PreTestSteps: ${{ parameters.PreTestSteps }} - PostTestSteps: ${{ parameters.PostTestSteps }} + # PrePublishBuild runs a narrower set of fast builds. If these builds pass, + # Integration can launch immediately without awaiting more build and test jobs + - stage: PrePublishBuild + variables: + - template: /eng/pipelines/templates/variables/image.yml@self + dependsOn: [] + jobs: + - template: /eng/pipelines/templates/jobs/archetype-sdk-client.yml@self + parameters: + MatrixFile: eng/pipelines/templates/stages/platform-matrix-quick.json + JobName: QuickValidate + ServiceDirectory: ${{ parameters.ServiceDirectory }} + Artifacts: ${{ parameters.Artifacts }} + CtestRegex: ${{ parameters.CtestRegex }} + CtestExcludeRegex: ${{ parameters.CtestExcludeRegex }} + CoverageEnabled: ${{ parameters.CoverageEnabled }} + CoverageReportPath: ${{ parameters.CoverageReportPath }} + LineCoverageTarget: ${{ parameters.LineCoverageTarget }} + BranchCoverageTarget: ${{ parameters.BranchCoverageTarget }} + ${{ if eq(parameters.ServiceDirectory, 'template') }}: + TestPipeline: true + TestEnv: ${{ parameters.TestEnv }} + PreTestSteps: ${{ parameters.PreTestSteps }} + PostTestSteps: ${{ parameters.PostTestSteps }} + RunMetaJobs: true + + - stage: Build + variables: + - template: /eng/pipelines/templates/variables/image.yml@self + dependsOn: [] + jobs: + - template: /eng/pipelines/templates/jobs/archetype-sdk-client.yml@self + # Code coverage is enabled by default for live tests + parameters: + MatrixFile: eng/pipelines/templates/stages/platform-matrix.json + JobName: Validate + ServiceDirectory: ${{ parameters.ServiceDirectory }} + Artifacts: ${{ parameters.Artifacts }} + CtestRegex: ${{ parameters.CtestRegex }} + CtestExcludeRegex: ${{ parameters.CtestExcludeRegex }} + CoverageEnabled: ${{ parameters.CoverageEnabled }} + CoverageReportPath: ${{ parameters.CoverageReportPath }} + LineCoverageTarget: ${{ parameters.LineCoverageTarget }} + BranchCoverageTarget: ${{ parameters.BranchCoverageTarget }} + ${{ if eq(parameters.ServiceDirectory, 'template') }}: + TestPipeline: true + TestEnv: ${{ parameters.TestEnv }} + PreTestSteps: ${{ parameters.PreTestSteps }} + PostTestSteps: ${{ parameters.PostTestSteps }} + RunMetaJobs: false + + - ${{ if and(eq(variables['System.TeamProject'], 'internal'), ne(parameters.LiveTestCtestRegex, '')) }}: + - template: /eng/pipelines/templates/stages/archetype-sdk-tests.yml@self + parameters: + TimeoutInMinutes: ${{ parameters.LiveTestTimeoutInMinutes }} + ServiceDirectory: ${{ parameters.ServiceDirectory }} + CtestRegex: ${{ parameters.LiveTestCtestRegex }} + CoverageReportPath: ${{ parameters.CoverageReportPath }} + Location: ${{ parameters.Location }} + CloudConfig: ${{ parameters.CloudConfig }} + Clouds: ${{ parameters.Clouds }} + SupportedClouds: ${{ parameters.SupportedClouds }} + UnsupportedClouds: ${{ parameters.UnsupportedClouds }} + PreTestSteps: ${{ parameters.PreTestSteps }} + PostTestSteps: ${{ parameters.PostTestSteps }} + + - ${{ if and(eq(variables['System.TeamProject'], 'internal'), not(endsWith(variables['Build.DefinitionName'], ' - tests'))) }}: + - template: archetype-cpp-release.yml@self + parameters: + ServiceDirectory: ${{ parameters.ServiceDirectory }} + IntegrationDependsOn: + - PrePublishBuild + DependsOn: + - PrePublishBuild + - Build + # Only depend on `LiveTest` if there are live tests to execute + - ${{ if and(eq(variables['System.TeamProject'], 'internal'), ne(parameters.LiveTestCtestRegex, '')) }}: + # Pulled from stages/archetype-sdk-tests.yml to generate 'LiveTest_' + - ${{ each cloud in parameters.CloudConfig }}: + - ${{ if or(contains(parameters.Clouds, cloud.key), and(contains(variables['Build.DefinitionName'], 'tests-weekly'), contains(parameters.SupportedClouds, cloud.key))) }}: + - ${{ if not(contains(parameters.UnsupportedClouds, cloud.key)) }}: + - LiveTest_${{ cloud.key }} + Artifacts: ${{ parameters.Artifacts }} + ArtifactName: packages + ${{ if eq(parameters.ServiceDirectory, 'template') }}: + TestPipeline: true - - ${{ if and(eq(variables['System.TeamProject'], 'internal'), not(endsWith(variables['Build.DefinitionName'], ' - tests'))) }}: - - template: archetype-cpp-release.yml - parameters: - ServiceDirectory: ${{ parameters.ServiceDirectory }} - IntegrationDependsOn: - - PrePublishBuild - DependsOn: - - PrePublishBuild - - Build - # Only depend on `LiveTest` if there are live tests to execute - - ${{ if and(eq(variables['System.TeamProject'], 'internal'), ne(parameters.LiveTestCtestRegex, '')) }}: - # Pulled from stages/archetype-sdk-tests.yml to generate 'LiveTest_' - - ${{ each cloud in parameters.CloudConfig }}: - - ${{ if or(contains(parameters.Clouds, cloud.key), and(contains(variables['Build.DefinitionName'], 'tests-weekly'), contains(parameters.SupportedClouds, cloud.key))) }}: - - ${{ if not(contains(parameters.UnsupportedClouds, cloud.key)) }}: - - LiveTest_${{ cloud.key }} - Artifacts: ${{ parameters.Artifacts }} - ArtifactName: packages - ${{ if eq(parameters.ServiceDirectory, 'template') }}: - TestPipeline: true diff --git a/eng/pipelines/templates/stages/archetype-sdk-tests.yml b/eng/pipelines/templates/stages/archetype-sdk-tests.yml index ed3d8f545..adbe4cada 100644 --- a/eng/pipelines/templates/stages/archetype-sdk-tests.yml +++ b/eng/pipelines/templates/stages/archetype-sdk-tests.yml @@ -43,7 +43,7 @@ stages: - stage: LiveTest_${{ cloud.key }} dependsOn: [] jobs: - - template: /eng/common/pipelines/templates/jobs/archetype-sdk-tests-generate.yml + - template: /eng/common/pipelines/templates/jobs/generate-job-matrix.yml parameters: MatrixConfigs: - Name: base @@ -51,6 +51,8 @@ stages: Selection: all GenerateVMJobs: true JobTemplatePath: /eng/pipelines/templates/jobs/live.tests.yml + OsVmImage: $(LINUXVMIMAGE) + Pool: $(LINUXPOOL) CloudConfig: SubscriptionConfiguration: ${{ cloud.value.SubscriptionConfiguration }} SubscriptionConfigurations: ${{ cloud.value.SubscriptionConfigurations }} diff --git a/eng/pipelines/templates/stages/platform-matrix-cmakegenerate.json b/eng/pipelines/templates/stages/platform-matrix-cmakegenerate.json index 02ae3c168..d822c1137 100644 --- a/eng/pipelines/templates/stages/platform-matrix-cmakegenerate.json +++ b/eng/pipelines/templates/stages/platform-matrix-cmakegenerate.json @@ -3,19 +3,19 @@ "CmakeEnvArg": "", "OSConfig": { "Linux": { - "Pool": "azsdk-pool-mms-ubuntu-2204-general", - "OSVmImage": "MMSUbuntu22.04", + "Pool": "env:LINUXNEXTPOOL", + "OSVmImage": "env:LINUXNEXTVMIMAGE", "AptDependencies": "libcurl4-openssl-dev", "VCPKG_DEFAULT_TRIPLET": "x64-linux" }, "Windows": { - "Pool": "azsdk-pool-mms-win-2022-general", - "OSVmImage": "windows-2022", + "Pool": "env:WINDOWSPOOL", + "OSVmImage": "env:WINDOWSVMIMAGE", "VCPKG_DEFAULT_TRIPLET": "x64-windows" }, "Mac": { - "Pool": "Azure Pipelines", - "OSVmImage": "macos-11", + "Pool": "env:MACPOOL", + "OSVmImage": "env:MACVMIMAGE", "VCPKG_DEFAULT_TRIPLET": "x64-osx" } } diff --git a/eng/pipelines/templates/stages/platform-matrix-cmakesourcegenerate.json b/eng/pipelines/templates/stages/platform-matrix-cmakesourcegenerate.json index 8c7791a0c..1ef1d36a8 100644 --- a/eng/pipelines/templates/stages/platform-matrix-cmakesourcegenerate.json +++ b/eng/pipelines/templates/stages/platform-matrix-cmakesourcegenerate.json @@ -2,19 +2,19 @@ "matrix": { "OSConfig": { "Windows": { - "Pool": "azsdk-pool-mms-win-2022-general", - "OSVmImage": "windows-2022", + "Pool": "env:WINDOWSPOOL", + "OSVmImage": "env:WINDOWSVMIMAGE", "CmakeEnvArg": "" }, "Linux": { - "Pool": "azsdk-pool-mms-ubuntu-2204-general", - "OSVmImage": "MMSUbuntu22.04", + "Pool": "env:LINUXNEXTPOOL", + "OSVmImage": "env:LINUXNEXTVMIMAGE", "CmakeEnvArg": "", "AptDependencies": "libcurl4-openssl-dev" }, "Mac": { - "Pool": "Azure Pipelines", - "OSVmImage": "macos-11", + "Pool": "env:MACPOOL", + "OSVmImage": "env:MACVMIMAGE", "CmakeEnvArg": "OPENSSL_ROOT_DIR=/usr/local/opt/openssl@3 OPENSSL_INCLUDE_DIR=/usr/local/opt/openssl@3/include ", "BrewDependencies": "openssl" } diff --git a/eng/pipelines/templates/stages/platform-matrix-live.json b/eng/pipelines/templates/stages/platform-matrix-live.json index c918f6975..125443d4d 100644 --- a/eng/pipelines/templates/stages/platform-matrix-live.json +++ b/eng/pipelines/templates/stages/platform-matrix-live.json @@ -6,8 +6,8 @@ { "StaticConfigs": { "macOS-11": { - "Pool": "Azure Pipelines", - "OSVmImage": "macos-11", + "Pool": "env:MACPOOL", + "OSVmImage": "env:MACVMIMAGE", "VCPKG_DEFAULT_TRIPLET": "x64-osx", "BuildArgs": "-j 4" } @@ -24,8 +24,8 @@ "Ubu2204": { "VCPKG_DEFAULT_TRIPLET": "x64-linux", "BuildArgs": "-j 4", - "Pool": "azsdk-pool-mms-ubuntu-2204-general", - "OSVmImage": "MMSUbuntu22.04", + "Pool": "env:LINUXNEXTPOOL", + "OSVmImage": "env:LINUXNEXTVMIMAGE", "RunProxyTests": true } }, @@ -43,8 +43,8 @@ "StaticConfigs": { "Ubu20": { "BuildArgs": "-j 4", - "Pool": "azsdk-pool-mms-ubuntu-2004-general", - "OSVmImage": "MMSUbuntu20.04", + "Pool": "env:LINUXPOOL", + "OSVmImage": "env:LINUXVMIMAGE", "VCPKG_DEFAULT_TRIPLET": "x64-linux", "RunProxyTests": true } @@ -66,13 +66,13 @@ { "StaticConfigs": { "Win2019": { - "Pool": "azsdk-pool-mms-win-2019-general", - "OSVmImage": "windows-2019", + "Pool": "env:WINDOWSPREVIOUSPOOL", + "OSVmImage": "env:WINDOWSPREVIOUSVMIMAGE", "CMAKE_GENERATOR": "Visual Studio 16 2019" }, "Win2022": { - "Pool": "azsdk-pool-mms-win-2022-general", - "OSVmImage": "windows-2022", + "Pool": "env:WINDOWSPOOL", + "OSVmImage": "env:WINDOWSVMIMAGE", "CMAKE_GENERATOR": "Visual Studio 17 2022" } }, @@ -122,8 +122,8 @@ { "StaticConfigs": { "Win2022": { - "Pool": "azsdk-pool-mms-win-2022-general", - "OSVmImage": "windows-2022", + "Pool": "env:WINDOWSPOOL", + "OSVmImage": "env:WINDOWSVMIMAGE", "CMAKE_GENERATOR": "Visual Studio 17 2022", "RunProxyTests": true } diff --git a/eng/pipelines/templates/stages/platform-matrix-quick.json b/eng/pipelines/templates/stages/platform-matrix-quick.json index 3b5e75dce..7b1394a25 100644 --- a/eng/pipelines/templates/stages/platform-matrix-quick.json +++ b/eng/pipelines/templates/stages/platform-matrix-quick.json @@ -6,8 +6,8 @@ { "StaticConfigs": { "Ubuntu22": { - "OSVmImage": "MMSUbuntu22.04", - "Pool": "azsdk-pool-mms-ubuntu-2204-general", + "OSVmImage": "env:LINUXNEXTVMIMAGE", + "Pool": "env:LINUXNEXTPOOL", "VCPKG_DEFAULT_TRIPLET": "x64-linux", "BuildArgs": "-j 10", "RunProxyTests": true diff --git a/eng/pipelines/templates/stages/platform-matrix.json b/eng/pipelines/templates/stages/platform-matrix.json index 18f4db991..cdc5c3394 100644 --- a/eng/pipelines/templates/stages/platform-matrix.json +++ b/eng/pipelines/templates/stages/platform-matrix.json @@ -6,13 +6,13 @@ { "OSConfiguration": { "macOS-11": { - "OSVmImage": "macos-11", + "OSVmImage": "env:MACVMIMAGE", "XCODE_VERSION": "12.5.1" } }, "StaticConfigs": { "_": { - "Pool": "Azure Pipelines", + "Pool": "env:MACPOOL", "BuildArgs": "-j 10", "VCPKG_DEFAULT_TRIPLET": "x64-osx", "CmakeArgs": " -DBUILD_TESTING=ON -DENABLE_PROXY_TESTS=OFF -DBUILD_PERFORMANCE_TESTS=ON -DRUN_LONG_UNIT_TESTS=ON -DBUILD_TRANSPORT_CURL=ON", @@ -31,8 +31,8 @@ { "StaticConfigs": { "Win2019_x64_Release": { - "OSVmImage": "windows-2019", - "Pool": "azsdk-pool-mms-win-2019-general", + "OSVmImage": "env:WINDOWSPREVIOUSVMIMAGE", + "Pool": "azsdk-pool-mms-win-2019-1es-pt", "CMAKE_GENERATOR": "Visual Studio 16 2019", "CMAKE_GENERATOR_PLATFORM": "x64", "VCPKG_DEFAULT_TRIPLET": "x64-windows-static", @@ -49,8 +49,8 @@ { "StaticConfigs": { "Win2022": { - "OSVmImage": "windows-2022", - "Pool": "azsdk-pool-mms-win-2022-general", + "OSVmImage": "env:WINDOWSVMIMAGE", + "Pool": "env:WINDOWSPOOL", "CMAKE_GENERATOR": "Visual Studio 17 2022" } }, @@ -78,8 +78,8 @@ { "StaticConfigs": { "Win2022": { - "OSVmImage": "windows-2022", - "Pool": "azsdk-pool-mms-win-2022-general", + "OSVmImage": "env:WINDOWSVMIMAGE", + "Pool": "env:WINDOWSPOOL", "RunProxyTests": true, "CMAKE_GENERATOR": "Visual Studio 17 2022" } @@ -111,8 +111,8 @@ "StaticConfigs": { "Win2022": { "VcpkgInstall": "openssl", - "OSVmImage": "windows-2022", - "Pool": "azsdk-pool-mms-win-2022-general", + "OSVmImage": "env:WINDOWSVMIMAGE", + "Pool": "env:WINDOWSPOOL", "CMAKE_GENERATOR": "Visual Studio 17 2022", "PublishMapFiles": "true" } @@ -141,8 +141,8 @@ { "StaticConfigs": { "Ubuntu22": { - "OSVmImage": "MMSUbuntu22.04", - "Pool": "azsdk-pool-mms-ubuntu-2204-general", + "OSVmImage": "env:LINUXNEXTVMIMAGE", + "Pool": "env:LINUXNEXTPOOL", "VCPKG_DEFAULT_TRIPLET": "x64-linux", "BuildArgs": "-j 10", "RunProxyTests": true @@ -190,8 +190,8 @@ { "StaticConfigs": { "Ubuntu20": { - "OSVmImage": "MMSUbuntu20.04", - "Pool": "azsdk-pool-mms-ubuntu-2004-general", + "OSVmImage": "env:LINUXVMIMAGE", + "Pool": "env:LINUXPOOL", "VCPKG_DEFAULT_TRIPLET": "x64-linux", "BuildArgs": "-j 10", "RunProxyTests": true @@ -208,8 +208,8 @@ { "StaticConfigs": { "Ubuntu20": { - "OSVmImage": "MMSUbuntu20.04", - "Pool": "azsdk-pool-mms-ubuntu-2004-general", + "OSVmImage": "env:LINUXVMIMAGE", + "Pool": "env:LINUXPOOL", "VCPKG_DEFAULT_TRIPLET": "x64-linux", "BuildArgs": "-j 10", "CC": "/usr/bin/clang-11", diff --git a/eng/pipelines/templates/variables/image.yml b/eng/pipelines/templates/variables/image.yml new file mode 100644 index 000000000..cef2b9dfc --- /dev/null +++ b/eng/pipelines/templates/variables/image.yml @@ -0,0 +1,33 @@ +# Default pool image selection. Set as variable so we can override at pipeline level + +variables: + - name: LINUXPOOL + value: azsdk-pool-mms-ubuntu-2004-general + - name: LINUXNEXTPOOL + value: azsdk-pool-mms-ubuntu-2204-general + - name: WINDOWSPOOL + value: azsdk-pool-mms-win-2022-general + - name: WINDOWSPREVIOUSPOOL + value: azsdk-pool-mms-win-2019-general + - name: MACPOOL + value: Azure Pipelines + + - name: LINUXVMIMAGE + value: azsdk-pool-mms-ubuntu-2004-1espt + - name: LINUXNEXTVMIMAGE + value: azsdk-pool-mms-ubuntu-2204-1espt + - name: WINDOWSVMIMAGE + value: azsdk-pool-mms-win-2022-1espt + - name: WINDOWSPREVIOUSVMIMAGE + value: azsdk-pool-mms-win-2019-1espt + - name: MACVMIMAGE + value: macos-11 + + # Values required for pool.os field in 1es pipeline templates + - name: LINUXOS + value: linux + - name: WINDOWSOS + value: windows + - name: MACOS + value: macOS + diff --git a/eng/scripts/Get-BinarySizes.ps1 b/eng/scripts/Get-BinarySizes.ps1 index c7c938db1..3ba62c99c 100644 --- a/eng/scripts/Get-BinarySizes.ps1 +++ b/eng/scripts/Get-BinarySizes.ps1 @@ -48,23 +48,23 @@ function getTargetOs { return $OsVMImage } - if ($OsVMImage -eq "windows-2019") { + if ($OsVMImage -eq "windows-2019" -or $OsVMImage.Contains("win-2019")) { return "win-2019" } - if ($OsVMImage -eq "windows-2022") { + if ($OsVMImage -eq "windows-2022" -or $OsVMImage.Contains("win-2022")) { return "win-2022" } - if ($OsVMImage -in "MMSUbuntu18.04", "ubuntu-18.04") { + if ($OsVMImage -in "MMSUbuntu18.04", "ubuntu-18.04", "azsdk-pool-mms-ubuntu-1804-1espt") { return "ubuntu-18.04" } - if ($OsVMImage -in "MMSUbuntu20.04", "ubuntu-20.04") { + if ($OsVMImage -in "MMSUbuntu20.04", "ubuntu-20.04", "azsdk-pool-mms-ubuntu-2004-1espt") { return "ubuntu-20.04" } - if ($OsVMImage -in "MMSUbuntu22.04", "ubuntu-22.04") { + if ($OsVMImage -in "MMSUbuntu22.04", "ubuntu-22.04", "azsdk-pool-mms-ubuntu-2204-1espt") { return "ubuntu-22.04" } @@ -97,11 +97,11 @@ function getToolChain { return "MSVC" } - if ($OSVmImage -match "windows-\d{4}") { + if ($OSVmImage -match "windows-\d{4}" -or $OSVmImage -match "win-\d{4}") { return "MSVC17" } - if ($OSVmImage.Contains("Ubuntu")) { + if ($OSVmImage.Contains("Ubuntu") -or $OSVmImage.Contains("ubuntu")) { if ($CmakeEnvArg.Contains('g++-5')) { return 'g++-5' } elseif ($env:CXX -and $env:CXX.Contains("g++8")) { @@ -121,7 +121,7 @@ function getTargetPlatform { return "macos" } - if ($OSVmImage -match 'MMS\d{4}' -or $OsVMImage -match "windows-\d{4}") { + if ($OSVmImage -match 'MMS\d{4}' -or $OsVMImage -match "windows-\d{4}" -or $OsVMImage -match "win-\d{4}") { if (!$env:CMAKE_SYSTEM_NAME -and !$CmakeArgs.Contains('WindowsStore')) { return 'win32' } elseif ($env:CMAKE_SYSTEM_NAME -eq 'WindowsStore' -or $CmakeArgs.Contains('WindowsStore')) { @@ -129,7 +129,7 @@ function getTargetPlatform { } } - if ($OSVmImage.Contains("Ubuntu")) { + if ($OSVmImage.Contains("Ubuntu") -or $OSVmImage.Contains("ubuntu")) { return 'linux' } diff --git a/sdk/attestation/ci.yml b/sdk/attestation/ci.yml index 44b30927e..fab8d89f1 100644 --- a/sdk/attestation/ci.yml +++ b/sdk/attestation/ci.yml @@ -22,8 +22,8 @@ pr: include: - sdk/attestation -stages: - - template: ../../eng/pipelines/templates/stages/archetype-sdk-client.yml +extends: + template: ../../eng/pipelines/templates/stages/archetype-sdk-client.yml parameters: ServiceDirectory: attestation Clouds: Public diff --git a/sdk/core/ci.yml b/sdk/core/ci.yml index d8c59326d..beb388ef2 100644 --- a/sdk/core/ci.yml +++ b/sdk/core/ci.yml @@ -41,8 +41,8 @@ pr: - '*.md' - /**/*.md -stages: - - template: ../../eng/pipelines/templates/stages/archetype-sdk-client.yml +extends: + template: ../../eng/pipelines/templates/stages/archetype-sdk-client.yml parameters: ServiceDirectory: core # CI has static code analysis disabled, while LiveTest will have it enabled diff --git a/sdk/eventhubs/ci.yml b/sdk/eventhubs/ci.yml index 4779aa940..acf82147d 100644 --- a/sdk/eventhubs/ci.yml +++ b/sdk/eventhubs/ci.yml @@ -23,8 +23,8 @@ pr: - sdk/eventhubs - eng/common/testproxy -stages: - - template: ../../eng/pipelines/templates/stages/archetype-sdk-client.yml +extends: + template: ../../eng/pipelines/templates/stages/archetype-sdk-client.yml parameters: ServiceDirectory: eventhubs CtestRegex: "azure-messaging-eventhubs.*" diff --git a/sdk/identity/ci.yml b/sdk/identity/ci.yml index 90162d4eb..2fcb520b3 100644 --- a/sdk/identity/ci.yml +++ b/sdk/identity/ci.yml @@ -22,8 +22,8 @@ pr: include: - sdk/identity -stages: - - template: ../../eng/pipelines/templates/stages/archetype-sdk-client.yml +extends: + template: ../../eng/pipelines/templates/stages/archetype-sdk-client.yml parameters: ServiceDirectory: identity CtestRegex: azure-identity. diff --git a/sdk/keyvault/ci.yml b/sdk/keyvault/ci.yml index 730b77376..eb4040fab 100644 --- a/sdk/keyvault/ci.yml +++ b/sdk/keyvault/ci.yml @@ -23,8 +23,8 @@ pr: - sdk/keyvault - eng/common/testproxy -stages: - - template: ../../eng/pipelines/templates/stages/archetype-sdk-client.yml +extends: + template: ../../eng/pipelines/templates/stages/archetype-sdk-client.yml parameters: ServiceDirectory: keyvault CtestRegex: "azure-security-keyvault.*" diff --git a/sdk/storage/ci.yml b/sdk/storage/ci.yml index 7f749cd21..54b1d528c 100644 --- a/sdk/storage/ci.yml +++ b/sdk/storage/ci.yml @@ -22,8 +22,8 @@ pr: - sdk/storage - eng/common/testproxy -stages: - - template: ../../eng/pipelines/templates/stages/archetype-sdk-client.yml +extends: + template: ../../eng/pipelines/templates/stages/archetype-sdk-client.yml parameters: ServiceDirectory: storage # Not running tests on CI but only on LiveTest mode diff --git a/sdk/tables/ci.yml b/sdk/tables/ci.yml index 75b7b411f..350b30e12 100644 --- a/sdk/tables/ci.yml +++ b/sdk/tables/ci.yml @@ -22,8 +22,8 @@ pr: - sdk/tables - eng/common/testproxy -stages: - - template: ../../eng/pipelines/templates/stages/archetype-sdk-client.yml +extends: + template: ../../eng/pipelines/templates/stages/archetype-sdk-client.yml parameters: ServiceDirectory: tables # Not running tests on CI but only on LiveTest mode diff --git a/sdk/template/ci.yml b/sdk/template/ci.yml index fece1b1b9..0da45624e 100644 --- a/sdk/template/ci.yml +++ b/sdk/template/ci.yml @@ -22,8 +22,8 @@ pr: include: - sdk/template -stages: - - template: ../../eng/pipelines/templates/stages/archetype-sdk-client.yml +extends: + template: ../../eng/pipelines/templates/stages/archetype-sdk-client.yml parameters: ServiceDirectory: template CtestRegex: azure-template