diff --git a/azure-pipelines-PR.yml b/azure-pipelines-PR.yml new file mode 100644 index 000000000..6023bc5da --- /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/sourcelink + 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 7b4fb580e..720050e88 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,120 @@ 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 +resources: + repositories: + - repository: 1ESPipelineTemplates + type: git + name: 1ESPipelineTemplates/1ESPipelineTemplates + ref: refs/tags/release +extends: + template: v1/1ES.Official.PipelineTemplate.yml@1ESPipelineTemplates + parameters: + sdl: + sourceAnalysisPool: + name: $(DncEngInternalBuildPool) + image: 1es-windows-2022 + os: windows + 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/sourcelink + 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 diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 83d3fad59..60efbae49 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -30,9 +30,9 @@ d9af20b993c474033098fe0851c2d71b4ecf434b - + https://github.com/dotnet/xliff-tasks - 194f32828726c3f1f63f79f3dc09b9e99c157b11 + 73f0850939d96131c28cf6ea6ee5aacb4da0083a