Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
196 changes: 99 additions & 97 deletions azure-pipelines-official.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,11 @@ trigger:
pr: none

resources:
- repo: self
clean: true
repositories:
- repository: 1ESPipelineTemplates
type: git
name: 1ESPipelineTemplates/1ESPipelineTemplates
ref: refs/tags/release

parameters:
- name: IbcDrop
Expand Down Expand Up @@ -52,6 +55,8 @@ variables:
- group: DotNet-DevDiv-Insertion-Workflow-Variables
- name: _DevDivDropAccessToken
value: $(dn-bot-devdiv-drop-rw-code-rw)
- name: ArtifactServices.Drop.PAT
value: $(dn-bot-devdiv-drop-rw-code-rw)
- group: DotNet-Roslyn-Insertion-Variables

- name: BuildConfiguration
Expand All @@ -72,28 +77,108 @@ variables:
- name: Insertion.TitleSuffix
value: ''

extends:
template: v1/1ES.Official.PipelineTemplate.yml@1ESPipelineTemplates
parameters:
featureFlags:
autoBaseline: true
sdl:
sourceAnalysisPool:
name: NetCore1ESPool-Svc-Internal
image: 1es-windows-2022-pt
os: windows
sbom:
enabled: false
pool:
name: NetCore1ESPool-Svc-Internal
image: windows.vs2022preview.amd64
os: windows
customBuildTags:
- ES365AIMigrationTooling
stages:

- stage: build
displayName: Build and Test
pool:
name: NetCore1ESPool-Svc-Internal
demands: ImageOverride -equals windows.vs2022preview.amd64

jobs:
- ${{ if eq(variables['Build.SourceBranch'], 'refs/heads/release/dev17.9') }}:
- template: /eng/common/templates/job/onelocbuild.yml
- template: /eng/common/templates-official/job/onelocbuild.yml@self
parameters:
MirrorRepo: roslyn
MirrorBranch: release/dev17.9
LclSource: lclFilesfromPackage
LclPackageId: 'LCL-JUNO-PROD-ROSLYN'

- template: eng/common/templates/jobs/source-build.yml
- template: /eng/common/templates-official/jobs/source-build.yml@self

- job: OfficialBuild
displayName: Official Build
timeoutInMinutes: 360
templateContext:
outputs:

# Publish OptProf generated JSON files as a pipeline artifact. This allows for easy inspection from
# a build execution.
- output: pipelineArtifact
displayName: 'Publish OptProf Data Files'
condition: succeeded()
targetPath: '$(Build.SourcesDirectory)\artifacts\OptProf\$(BuildConfiguration)\Data'
artifactName: 'OptProf Data Files'

- output: pipelineArtifact
displayName: 'Publish Logs'
condition: succeededOrFailed()
targetPath: '$(Build.SourcesDirectory)\artifacts\log\$(BuildConfiguration)'
artifactName: 'Build Diagnostic Files'
publishLocation: Container

- output: pipelineArtifact
displayName: 'Publish Ngen Logs'
condition: succeeded()
targetPath: '$(Build.SourcesDirectory)\artifacts\log\$(BuildConfiguration)\ngen'
artifactName: 'NGen Logs'
publishLocation: Container

# Publishes setup VSIXes to a drop.
# Note: The insertion tool looks for the display name of this task in the logs.
- output: microBuildVstsDrop
displayName: Upload VSTS Drop
condition: succeeded()
dropFolder: 'artifacts\VSSetup\$(BuildConfiguration)\Insertion'
dropName: $(VisualStudio.DropName)
accessToken: $(_DevDivDropAccessToken)

# Publish insertion packages to CoreXT store.
- output: nuget
displayName: 'Publish CoreXT Packages'
condition: succeeded()
packageParentPath: '$(Build.SourcesDirectory)\artifacts\VSSetup\$(BuildConfiguration)\DevDivPackages'
packagesToPush: '$(Build.SourcesDirectory)\artifacts\VSSetup\$(BuildConfiguration)\DevDivPackages\**\*.nupkg'
allowPackageConflicts: true
nuGetFeedType: external
publishFeedCredentials: 'DevDiv - VS package feed'

# Publish an artifact that the RoslynInsertionTool is able to find by its name.
- output: pipelineArtifact
displayName: 'Publish Artifact VSSetup'
condition: succeeded()
targetPath: 'artifacts\VSSetup\$(BuildConfiguration)'
artifactName: 'VSSetup'

# Publish our NuPkgs as an artifact. The name of this artifact must be PackageArtifacts as the
# arcade templates depend on the name.
- output: buildArtifacts
displayName: 'Publish Artifact Packages'
condition: succeeded()
PathtoPublish: 'artifacts\packages\$(BuildConfiguration)'
ArtifactName: 'PackageArtifacts'

# Publish Asset Manifests for Build Asset Registry job
- output: buildArtifacts
displayName: 'Publish Asset Manifests'
condition: succeeded()
PathtoPublish: '$(Build.SourcesDirectory)/artifacts/log/$(BuildConfiguration)/AssetManifest'
ArtifactName: AssetManifests

steps:
- powershell: Write-Host "##vso[task.setvariable variable=SourceBranchName]$('$(Build.SourceBranch)'.Substring('refs/heads/'.Length))"
Expand Down Expand Up @@ -135,7 +220,6 @@ stages:
versionSpec: '16.x'
displayName: 'Install Node.js'


- task: NuGetToolInstaller@0
inputs:
versionSpec: '4.9.2'
Expand Down Expand Up @@ -207,7 +291,7 @@ stages:
/p:GenerateSbom=true
condition: succeeded()

- template: eng\common\templates\steps\generate-sbom.yml
- template: /eng/common/templates-official/steps/generate-sbom.yml@self

- task: PowerShell@2
displayName: Publish Assets
Expand All @@ -216,11 +300,9 @@ stages:
arguments: '-configuration $(BuildConfiguration) -branchName "$(SourceBranchName)"'
condition: succeeded()

# Publish OptProf configuration files
# The env variable is required to enable cross account access using PAT (dnceng -> devdiv)
- task: ms-vscs-artifact.build-tasks.artifactDropTask-1.artifactDropTask@0
env:
ARTIFACTSERVICES_DROP_PAT: $(_DevDivDropAccessToken)
# Publish OptProf configuration files to the artifact service
# This uses the ArtifactServices.Drop.PAT build variable which is required to enable cross account access using PAT (dnceng -> devdiv)
- task: 1ES.PublishArtifactsDrop@1
inputs:
dropServiceURI: 'https://devdiv.artifacts.visualstudio.com'
buildNumber: 'ProfilingInputs/$(System.TeamProject)/$(Build.Repository.Name)/$(SourceBranchName)/$(Build.BuildNumber)'
Expand All @@ -231,33 +313,6 @@ stages:
displayName: 'OptProf - Publish to Artifact Services - ProfilingInputs'
condition: succeeded()

# Publish OptProf generated JSON files as a build artifact. This allows for easy inspection from
# a build execution.
- task: PublishBuildArtifacts@1
displayName: Publish OptProf Data Files
inputs:
PathtoPublish: '$(Build.SourcesDirectory)\artifacts\OptProf\$(BuildConfiguration)\Data'
ArtifactName: 'OptProf Data Files'
condition: succeeded()

- task: PublishBuildArtifacts@1
displayName: Publish Logs
inputs:
PathtoPublish: '$(Build.SourcesDirectory)\artifacts\log\$(BuildConfiguration)'
ArtifactName: 'Build Diagnostic Files'
publishLocation: Container
continueOnError: true
condition: succeededOrFailed()

- task: PublishBuildArtifacts@1
displayName: Publish Ngen Logs
inputs:
PathtoPublish: '$(Build.SourcesDirectory)\artifacts\log\$(BuildConfiguration)\ngen'
ArtifactName: 'NGen Logs'
publishLocation: Container
continueOnError: true
condition: succeeded()

- task: PublishTestResults@2
displayName: Publish xUnit Test Results
inputs:
Expand All @@ -267,58 +322,8 @@ stages:
testRunTitle: 'Unit Tests'
condition: and(succeededOrFailed(), ne(variables['SkipTests'], 'true'))

# Publishes setup VSIXes to a drop.
# Note: The insertion tool looks for the display name of this task in the logs.
- task: ms-vseng.MicroBuildTasks.4305a8de-ba66-4d8b-b2d1-0dc4ecbbf5e8.MicroBuildUploadVstsDropFolder@1
displayName: Upload VSTS Drop
inputs:
DropName: $(VisualStudio.DropName)
DropFolder: 'artifacts\VSSetup\$(BuildConfiguration)\Insertion'
AccessToken: $(_DevDivDropAccessToken)
condition: succeeded()

# Publish insertion packages to CoreXT store.
- task: NuGetCommand@2
displayName: Publish CoreXT Packages
inputs:
command: push
packagesToPush: '$(Build.SourcesDirectory)\artifacts\VSSetup\$(BuildConfiguration)\DevDivPackages\**\*.nupkg'
allowPackageConflicts: true
nuGetFeedType: external
publishFeedCredentials: 'DevDiv - VS package feed'
condition: succeeded()

# Publish an artifact that the RoslynInsertionTool is able to find by its name.
- task: PublishBuildArtifacts@1
displayName: Publish Artifact VSSetup
inputs:
PathtoPublish: 'artifacts\VSSetup\$(BuildConfiguration)'
ArtifactName: 'VSSetup'
condition: succeeded()

# Publish our NuPkgs as an artifact. The name of this artifact must be PackageArtifacts as the
# arcade templates depend on the name.
- task: PublishBuildArtifacts@1
displayName: Publish Artifact Packages
inputs:
PathtoPublish: 'artifacts\packages\$(BuildConfiguration)'
ArtifactName: 'PackageArtifacts'
condition: succeeded()

# Publish Asset Manifests for Build Asset Registry job
- task: PublishBuildArtifacts@1
displayName: Publish Asset Manifests
inputs:
PathtoPublish: '$(Build.SourcesDirectory)/artifacts/log/$(BuildConfiguration)/AssetManifest'
ArtifactName: AssetManifests
condition: succeeded()

- task: ms-vseng.MicroBuildTasks.521a94ea-9e68-468a-8167-6dcf361ea776.MicroBuildCleanup@1
displayName: Perform Cleanup Tasks
condition: succeededOrFailed()

# Publish to Build Asset Registry
- template: /eng/common/templates/job/publish-build-assets.yml
- template: /eng/common/templates-official/job/publish-build-assets.yml@self
parameters:
publishUsingPipelines: true
dependsOn:
Expand All @@ -335,17 +340,14 @@ stages:
jobs:
- job: insert
displayName: Insert to VS
pool:
name: NetCore1ESPool-Svc-Internal
demands: ImageOverride -equals windows.vs2022.amd64
steps:
- download: current
artifact: VSSetup
- powershell: |
$branchName = "$(Build.SourceBranch)".Substring("refs/heads/".Length)
Write-Host "##vso[task.setvariable variable=ComponentBranchName]$branchName"
displayName: Get Branch Name
- template: eng/pipelines/insert.yml
- template: /eng/pipelines/insert.yml@self
parameters:
buildUserName: "dn-bot@microsoft.com"
buildPassword: $(dn-bot-devdiv-build-e-code-full-release-e-packaging-r)
Expand All @@ -358,7 +360,7 @@ stages:
dropPath: '$(Pipeline.Workspace)\VSSetup'

- ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
- template: eng\common\templates\post-build\post-build.yml
- template: /eng/common/templates-official/post-build/post-build.yml@self
parameters:
publishingInfraVersion: 3
# Symbol validation is not entirely reliable as of yet, so should be turned off until
Expand Down