From 70573843df67162487e1a7bbb43ff686db490362 Mon Sep 17 00:00:00 2001 From: Tomas Matousek Date: Wed, 27 May 2026 08:14:24 -0700 Subject: [PATCH 1/3] Port azure-pipelines-PR.yml and azure-pipelines.yml from release/9.0.0 Port the pipeline YAML files from release/9.0.0 to release/8.0.0: - Add azure-pipelines-PR.yml (new file for PR builds) - Update azure-pipelines.yml to use 1ES pipeline templates Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- azure-pipelines-PR.yml | 135 ++++++++++++++++++++++++ azure-pipelines.yml | 233 ++++++++++++++++++++--------------------- 2 files changed, 246 insertions(+), 122 deletions(-) create mode 100644 azure-pipelines-PR.yml diff --git a/azure-pipelines-PR.yml b/azure-pipelines-PR.yml new file mode 100644 index 0000000000..fb507ecd57 --- /dev/null +++ b/azure-pipelines-PR.yml @@ -0,0 +1,135 @@ +# Branches that trigger builds on PR +pr: + branches: + include: + - main + - release/* + paths: + exclude: + - README.md + - docs/* + +# Run official build every day at midnight, if code has changed since the last run. +schedules: +- cron: "0 0 * * *" + displayName: Daily Official Build + branches: + include: + - main + +variables: + - template: /eng/common/templates/variables/pool-providers.yml + - name: _TeamName + value: Roslyn + +stages: +- stage: build + displayName: Build + jobs: + - ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest'), eq(variables['Build.SourceBranch'], 'refs/heads/main')) }}: + - template: /eng/common/templates/job/onelocbuild.yml + parameters: + MirrorRepo: sourcelink + LclSource: lclFilesfromPackage + LclPackageId: 'LCL-JUNO-PROD-SOURCELINK' + - template: /eng/common/templates/jobs/jobs.yml + parameters: + enableMicrobuild: true + enablePublishBuildArtifacts: true + enablePublishTestResults: true + enablePublishBuildAssets: true + enablePublishUsingPipelines: true + enableTelemetry: true + enableSourceBuild: true + helixRepo: dotnet/symreader + jobs: + - job: Windows + pool: + ${{ if or(eq(variables['System.TeamProject'], 'public'), in(variables['Build.Reason'], 'PullRequest')) }}: + vmImage: 'windows-latest' + ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}: + name: $(DncEngInternalBuildPool) + demands: ImageOverride -equals 1es-windows-2022 + variables: + # Only enable publishing in official builds + - ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}: + # Publish-Build-Assets provides: MaestroAccessToken, BotAccount-dotnet-maestro-bot-PAT + - group: Publish-Build-Assets + - name: _OfficialBuildArgs + value: /p:DotNetSignType=$(_SignType) + /p:DotNetPublishUsingPipelines=true + /p:TeamName=$(_TeamName) + /p:OfficialBuildId=$(BUILD.BUILDNUMBER) + # else + - ${{ if or(eq(variables['System.TeamProject'], 'public'), in(variables['Build.Reason'], 'PullRequest')) }}: + - name: _OfficialBuildArgs + value: '' + strategy: + matrix: + ${{ if or(eq(variables['System.TeamProject'], 'public'), in(variables['Build.Reason'], 'PullRequest')) }}: + Debug: + _BuildConfig: Debug + _SignType: test + _BuildArgs: '' + Release: + _BuildConfig: Release + # PRs or external builds are not signed. + ${{ if or(eq(variables['System.TeamProject'], 'public'), in(variables['Build.Reason'], 'PullRequest')) }}: + _SignType: test + _BuildArgs: '' + ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}: + _SignType: real + _BuildArgs: $(_OfficialBuildArgs) + steps: + - checkout: self + clean: true + - script: eng\cibuild.cmd -configuration $(_BuildConfig) -prepareMachine $(_BuildArgs) + displayName: Build and Test + + # Archive NuGet packages to DevOps (workaround for https://github.com/dotnet/arcade/issues/4444) + - task: PublishBuildArtifacts@1 + displayName: Publish Artifact Packages + inputs: + PathtoPublish: 'artifacts\packages\$(_BuildConfig)' + ArtifactName: 'Packages' + condition: succeeded() + + - ${{ if or(eq(variables['System.TeamProject'], 'public'), in(variables['Build.Reason'], 'PullRequest')) }}: + - job: MacOS + displayName: 'MacOS' + pool: + vmImage: 'macOS-latest' + strategy: + matrix: + Debug: + _BuildConfig: Debug + _SignType: none + Release: + _BuildConfig: Release + _SignType: none + steps: + - checkout: self + clean: true + - script: eng/cibuild.sh --configuration $(_BuildConfig) --prepareMachine + displayName: Build and Test + + - job: Linux + displayName: 'Linux' + pool: + vmImage: 'ubuntu-latest' + strategy: + matrix: + Debug: + _BuildConfig: Debug + _SignType: none + Release: + _BuildConfig: Release + _SignType: none + steps: + - checkout: self + clean: true + - script: eng/cibuild.sh --configuration $(_BuildConfig) --prepareMachine + displayName: Build and Test + +- ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}: + - template: eng\common\templates\post-build\post-build.yml diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 7b4fb580ec..326dbc3c41 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -1,4 +1,3 @@ -# Branches that trigger builds on PR pr: branches: include: @@ -8,134 +7,124 @@ pr: exclude: - README.md - docs/* - -# Run official build every day at midnight, if code has changed since the last run. schedules: - cron: "0 0 * * *" displayName: Daily Official Build branches: include: - main - variables: - - template: /eng/common/templates/variables/pool-providers.yml - - name: _TeamName - value: Roslyn - -stages: -- stage: build - displayName: Build - jobs: - - ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest'), eq(variables['Build.SourceBranch'], 'refs/heads/main')) }}: - - template: /eng/common/templates/job/onelocbuild.yml - parameters: - MirrorRepo: sourcelink - LclSource: lclFilesfromPackage - LclPackageId: 'LCL-JUNO-PROD-SOURCELINK' - - template: /eng/common/templates/jobs/jobs.yml - parameters: - enableMicrobuild: true - enablePublishBuildArtifacts: true - enablePublishTestResults: true - enablePublishBuildAssets: true - enablePublishUsingPipelines: true - enableTelemetry: true - enableSourceBuild: true - helixRepo: dotnet/symreader +- template: /eng/common/templates-official/variables/pool-providers.yml@self +- name: _TeamName + value: Roslyn +- name: TeamName + value: Roslyn +resources: + repositories: + - repository: MicroBuildTemplate + type: git + name: 1ESPipelineTemplates/MicroBuildTemplate + ref: refs/tags/release +extends: + template: azure-pipelines/MicroBuild.1ES.Official.yml@MicroBuildTemplate + parameters: + sdl: + sourceAnalysisPool: + name: $(DncEngInternalBuildPool) + image: 1es-windows-2022 + os: windows + customBuildTags: + - ES365AIMigrationTooling + stages: + - stage: build + displayName: Build jobs: - - job: Windows - pool: - ${{ if or(eq(variables['System.TeamProject'], 'public'), in(variables['Build.Reason'], 'PullRequest')) }}: - vmImage: 'windows-latest' - ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}: - name: $(DncEngInternalBuildPool) - demands: ImageOverride -equals 1es-windows-2022 - variables: - # Only enable publishing in official builds - - ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}: - # DotNet-Blob-Feed provides: dotnetfeed-storage-access-key-1 - # Publish-Build-Assets provides: MaestroAccessToken, BotAccount-dotnet-maestro-bot-PAT - - group: Publish-Build-Assets - - name: _OfficialBuildArgs - value: /p:DotNetSignType=$(_SignType) - /p:DotNetPublishUsingPipelines=true - /p:TeamName=$(_TeamName) - /p:OfficialBuildId=$(BUILD.BUILDNUMBER) - # else - - ${{ if or(eq(variables['System.TeamProject'], 'public'), in(variables['Build.Reason'], 'PullRequest')) }}: - - name: _OfficialBuildArgs - value: '' - strategy: - matrix: - ${{ if or(eq(variables['System.TeamProject'], 'public'), in(variables['Build.Reason'], 'PullRequest')) }}: - Debug: - _BuildConfig: Debug - _SignType: test - _BuildArgs: '' - Release: - _BuildConfig: Release - # PRs or external builds are not signed. + - ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest'), eq(variables['Build.SourceBranch'], 'refs/heads/main')) }}: + - template: /eng/common/templates-official/job/onelocbuild.yml@self + parameters: + MirrorRepo: sourcelink + LclSource: lclFilesfromPackage + LclPackageId: 'LCL-JUNO-PROD-SOURCELINK' + - template: /eng/common/templates-official/jobs/jobs.yml@self + parameters: + enableMicrobuild: true + enablePublishBuildArtifacts: true + enablePublishTestResults: true + enablePublishBuildAssets: true + enablePublishUsingPipelines: true + enableTelemetry: true + enableSourceBuild: true + helixRepo: dotnet/symreader + jobs: + - job: Windows + pool: ${{ if or(eq(variables['System.TeamProject'], 'public'), in(variables['Build.Reason'], 'PullRequest')) }}: - _SignType: test - _BuildArgs: '' + vmImage: 'windows-latest' ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}: - _SignType: real - _BuildArgs: $(_OfficialBuildArgs) - steps: - - checkout: self - clean: true - - script: eng\cibuild.cmd -configuration $(_BuildConfig) -prepareMachine $(_BuildArgs) - displayName: Build and Test - - # Archive NuGet packages to DevOps (workaround for https://github.com/dotnet/arcade/issues/4444) - - task: PublishBuildArtifacts@1 - displayName: Publish Artifact Packages - inputs: - PathtoPublish: 'artifacts\packages\$(_BuildConfig)' - ArtifactName: 'Packages' - condition: succeeded() - - - ${{ if or(eq(variables['System.TeamProject'], 'public'), in(variables['Build.Reason'], 'PullRequest')) }}: - - job: MacOS - displayName: 'MacOS' - pool: - vmImage: 'macOS-latest' - strategy: - matrix: - Debug: - _BuildConfig: Debug - _SignType: none - Release: - _BuildConfig: Release - _SignType: none - steps: - - checkout: self - clean: true - - script: eng/cibuild.sh --configuration $(_BuildConfig) --prepareMachine - displayName: Build and Test - - - job: Linux - displayName: 'Linux' - pool: - vmImage: 'ubuntu-latest' - strategy: - matrix: - Debug: - _BuildConfig: Debug - _SignType: none - Release: - _BuildConfig: Release - _SignType: none - steps: - - checkout: self - clean: true - - script: eng/cibuild.sh --configuration $(_BuildConfig) --prepareMachine - displayName: Build and Test - -- ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}: - - template: eng\common\templates\post-build\post-build.yml - parameters: - publishingInfraVersion: 3 - # Symbol validation isn't being very reliable lately. This should be enabled back - # once this issue is resolved: https://github.com/dotnet/arcade/issues/2871 - enableSymbolValidation: false + name: $(DncEngInternalBuildPool) + demands: ImageOverride -equals 1es-windows-2022 + variables: + - ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}: + - group: Publish-Build-Assets + - name: _OfficialBuildArgs + value: /p:DotNetSignType=$(_SignType) /p:DotNetPublishUsingPipelines=true /p:TeamName=$(_TeamName) /p:OfficialBuildId=$(BUILD.BUILDNUMBER) + - ${{ if or(eq(variables['System.TeamProject'], 'public'), in(variables['Build.Reason'], 'PullRequest')) }}: + - name: _OfficialBuildArgs + value: '' + strategy: + matrix: + ${{ if or(eq(variables['System.TeamProject'], 'public'), in(variables['Build.Reason'], 'PullRequest')) }}: + Debug: + _BuildConfig: Debug + _SignType: test + _BuildArgs: '' + Release: + _BuildConfig: Release + ${{ if or(eq(variables['System.TeamProject'], 'public'), in(variables['Build.Reason'], 'PullRequest')) }}: + _SignType: test + _BuildArgs: '' + ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}: + _SignType: real + _BuildArgs: $(_OfficialBuildArgs) + steps: + - checkout: self + clean: true + - script: eng\cibuild.cmd -configuration $(_BuildConfig) -prepareMachine $(_BuildArgs) + displayName: Build and Test + - ${{ if or(eq(variables['System.TeamProject'], 'public'), in(variables['Build.Reason'], 'PullRequest')) }}: + - job: MacOS + displayName: 'MacOS' + pool: + vmImage: 'macOS-latest' + strategy: + matrix: + Debug: + _BuildConfig: Debug + _SignType: none + Release: + _BuildConfig: Release + _SignType: none + steps: + - checkout: self + clean: true + - script: eng/cibuild.sh --configuration $(_BuildConfig) --prepareMachine + displayName: Build and Test + - job: Linux + displayName: 'Linux' + pool: + vmImage: 'ubuntu-latest' + strategy: + matrix: + Debug: + _BuildConfig: Debug + _SignType: none + Release: + _BuildConfig: Release + _SignType: none + steps: + - checkout: self + clean: true + - script: eng/cibuild.sh --configuration $(_BuildConfig) --prepareMachine + displayName: Build and Test + - ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}: + - template: /eng/common/templates-official/post-build/post-build.yml@self From 5779490cc04d9c9a98251664cbd2cd7db7b92960 Mon Sep 17 00:00:00 2001 From: Tomas Matousek Date: Wed, 27 May 2026 15:49:05 -0700 Subject: [PATCH 2/3] Migrate official pipeline to 1ESPipelineTemplates - Switch from MicroBuild.1ES.Official.yml@MicroBuildTemplate to v1/1ES.Official.PipelineTemplate.yml@1ESPipelineTemplates - Remove customBuildTags (ES365 migration marker) - Remove unused TeamName variable (keep _TeamName for MicroBuild signing) - Fix helixRepo from dotnet/symreader to dotnet/sourcelink in both pipelines Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- azure-pipelines-PR.yml | 2 +- azure-pipelines.yml | 12 ++++-------- 2 files changed, 5 insertions(+), 9 deletions(-) diff --git a/azure-pipelines-PR.yml b/azure-pipelines-PR.yml index fb507ecd57..6023bc5daa 100644 --- a/azure-pipelines-PR.yml +++ b/azure-pipelines-PR.yml @@ -41,7 +41,7 @@ stages: enablePublishUsingPipelines: true enableTelemetry: true enableSourceBuild: true - helixRepo: dotnet/symreader + helixRepo: dotnet/sourcelink jobs: - job: Windows pool: diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 326dbc3c41..720050e886 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -17,24 +17,20 @@ variables: - template: /eng/common/templates-official/variables/pool-providers.yml@self - name: _TeamName value: Roslyn -- name: TeamName - value: Roslyn resources: repositories: - - repository: MicroBuildTemplate + - repository: 1ESPipelineTemplates type: git - name: 1ESPipelineTemplates/MicroBuildTemplate + name: 1ESPipelineTemplates/1ESPipelineTemplates ref: refs/tags/release extends: - template: azure-pipelines/MicroBuild.1ES.Official.yml@MicroBuildTemplate + template: v1/1ES.Official.PipelineTemplate.yml@1ESPipelineTemplates parameters: sdl: sourceAnalysisPool: name: $(DncEngInternalBuildPool) image: 1es-windows-2022 os: windows - customBuildTags: - - ES365AIMigrationTooling stages: - stage: build displayName: Build @@ -54,7 +50,7 @@ extends: enablePublishUsingPipelines: true enableTelemetry: true enableSourceBuild: true - helixRepo: dotnet/symreader + helixRepo: dotnet/sourcelink jobs: - job: Windows pool: From b7c54cbd97e54f1a98344627e27a9f635ae36674 Mon Sep 17 00:00:00 2001 From: "Matt Mitchell (.NET)" Date: Mon, 1 Jun 2026 14:36:22 -0700 Subject: [PATCH 3/3] Update coherency --- eng/Version.Details.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 83d3fad591..60efbae495 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -30,9 +30,9 @@ d9af20b993c474033098fe0851c2d71b4ecf434b - + https://github.com/dotnet/xliff-tasks - 194f32828726c3f1f63f79f3dc09b9e99c157b11 + 73f0850939d96131c28cf6ea6ee5aacb4da0083a