1
+ # Create a VS insertion (DotNet-MSBuild-Trusted -> VS) from a build artifact on main or any servicing branch.
2
+ trigger : none
3
+ name : $(Date:yyyyMMdd).$(Rev:r)
4
+
5
+ schedules :
6
+ - cron : ' 0 3 * * *' # Runs every day at 3AM UTC
7
+ displayName : Daily VS insertion
8
+ branches :
9
+ include :
10
+ - main
11
+ - vs*
12
+ always : false # Don't run if there are no code changes
13
+
14
+ parameters :
15
+ - name : TargetBranch
16
+ default : auto
17
+ type : string
18
+ displayName : ' Insertion Target Branch (recommended to use `auto`)'
19
+ values :
20
+ - auto
21
+ - main
22
+ - rel/d17.13
23
+ - rel/d17.12
24
+ - rel/d17.11
25
+ - rel/d17.10
26
+ - rel/d17.8
27
+ - rel/d17.6
28
+ - rel/d17.3
29
+ - rel/d17.0
30
+ variables :
31
+ # `auto` should work every time and selecting a branch in parameters is likely to fail due to incompatible versions in MSBuild and VS
32
+ - name : AutoInsertTargetBranch
33
+ ${{ if eq(variables['Build.SourceBranchName'], 'vs17.13') }} :
34
+ value : ' rel/d17.13'
35
+ ${{ elseif eq(variables['Build.SourceBranchName'], 'vs17.12') }} :
36
+ value : ' rel/d17.12'
37
+ ${{ elseif eq(variables['Build.SourceBranchName'], 'vs17.11') }} :
38
+ value : ' rel/d17.11'
39
+ ${{ elseif eq(variables['Build.SourceBranchName'], 'vs17.10') }} :
40
+ value : ' rel/d17.10'
41
+ ${{ elseif eq(variables['Build.SourceBranchName'], 'vs17.8') }} :
42
+ value : ' rel/d17.8'
43
+ ${{ elseif eq(variables['Build.SourceBranchName'], 'vs17.6') }} :
44
+ value : ' rel/d17.6'
45
+ ${{ elseif eq(variables['Build.SourceBranchName'], 'vs17.3') }} :
46
+ value : ' rel/d17.3'
47
+ ${{ elseif eq(variables['Build.SourceBranchName'], 'vs17.0') }} :
48
+ value : ' rel/d17.0'
49
+ ${{ elseif eq(variables['Build.SourceBranchName'], 'main') }} :
50
+ value : ' main'
51
+ ${{ else }} :
52
+ value : ' '
53
+ - name : InsertTargetBranch
54
+ ${{ if not(eq(parameters.TargetBranch, 'auto')) }} :
55
+ value : ${{ parameters.TargetBranch }}
56
+ ${{ else }} :
57
+ value : $(AutoInsertTargetBranch)
58
+ - name : InsertPropsValues
59
+ # servicing branches until 17.12 also include Microsoft.Build.Engine and Microsoft.Build.Conversion.Core
60
+ ${{ if or(eq(variables['Build.SourceBranchName'], 'vs17.0'), eq(variables['Build.SourceBranchName'], 'vs17.3'), eq(variables['Build.SourceBranchName'], 'vs17.6'), eq(variables['Build.SourceBranchName'], 'vs17.8'), eq(variables['Build.SourceBranchName'], 'vs17.10'), eq(variables['Build.SourceBranchName'], 'vs17.11'), eq(variables['Build.SourceBranchName'], 'vs17.12')) }} :
61
+ value : VS.ExternalAPIs.MSBuild=$(MSBuild_ExtApisPackageVersion);Microsoft.Build=$(MicrosoftNETStringToolsPackageVersion);Microsoft.Build.Conversion.Core=$(MicrosoftNETStringToolsPackageVersion);Microsoft.Build.Engine=$(MicrosoftNETStringToolsPackageVersion);Microsoft.Build.Framework=$(MicrosoftNETStringToolsPackageVersion);Microsoft.Build.Tasks.Core=$(MicrosoftNETStringToolsPackageVersion);Microsoft.Build.Utilities.Core=$(MicrosoftNETStringToolsPackageVersion);Microsoft.NET.StringTools=$(MicrosoftNETStringToolsPackageVersion)
62
+ ${{ else }} :
63
+ value : VS.ExternalAPIs.MSBuild=$(MSBuild_ExtApisPackageVersion);Microsoft.Build=$(MicrosoftNETStringToolsPackageVersion);Microsoft.Build.Framework=$(MicrosoftNETStringToolsPackageVersion);Microsoft.Build.Tasks.Core=$(MicrosoftNETStringToolsPackageVersion);Microsoft.Build.Utilities.Core=$(MicrosoftNETStringToolsPackageVersion);Microsoft.NET.StringTools=$(MicrosoftNETStringToolsPackageVersion)
64
+ - name : TeamName
65
+ value : msbuild
66
+ - name : TeamEmail
67
+
68
+
69
+ resources :
70
+ pipelines :
71
+ - pipeline : ' MSBuild'
72
+ project : ' DevDiv'
73
+ source : ' MSBuild'
74
+ repositories :
75
+ - repository : 1ESPipelineTemplates
76
+ type : git
77
+ name : 1ESPipelineTemplates/1ESPipelineTemplates
78
+ ref : refs/tags/release
79
+ extends :
80
+ template : v1/1ES.Official.PipelineTemplate.yml@1ESPipelineTemplates
81
+ parameters :
82
+ pool :
83
+ name : VSEngSS-MicroBuild2022-1ES
84
+ customBuildTags :
85
+ - ES365AIMigrationTooling-Release
86
+ stages :
87
+ - stage : RetainBuild
88
+ displayName : Retain build
89
+ jobs :
90
+ - job : Job_1
91
+ displayName : Run on agent
92
+ condition : succeeded()
93
+ timeoutInMinutes : 0
94
+ steps :
95
+ # Check that InsertTargetBranch is valid before running anything else.
96
+ - task : PowerShell@2
97
+ name : CheckInsertTargetBranch
98
+ inputs :
99
+ targetType : inline
100
+ script : |
101
+ if ("$(InsertTargetBranch)" -eq "") {
102
+ Write-Error "InsertTargetBranch is not set, this means your're not inserting from main or a valid servicing branch."
103
+ exit 1
104
+ }
105
+ - task : MicroBuildRetainVstsDrops@1
106
+ name : MicroBuildRetainVstsDrops_2
107
+ displayName : Retain VSTS Drops
108
+ inputs :
109
+ DropNames : Products/DevDiv/DotNet-msbuild-Trusted/$(Build.SourceBranchName)/$(Build.BuildNumber)
110
+ AccessToken : $(System.AccessToken)
111
+ DropServiceUri : https://devdiv.artifacts.visualstudio.com/DefaultCollection
112
+ # retain servicing indefinitely, main only for 183 days
113
+ ${{ if eq(variables['InsertTargetBranch'], 'main') }} :
114
+ DropRetentionDays : 183
115
+ - stage : VSInsertion
116
+ displayName : VS insertion
117
+ dependsOn : RetainBuild
118
+ variables :
119
+ InsertConfigValues : VS.ExternalAPIs.MSBuild=$(MSBuild_ExtApisPackageVersion)
120
+ InsertCustomScriptExecutionCommand : $(Pipeline.Workspace)\xsd\Update-MSBuildXsds.ps1
121
+ InsertDescription : Insert MSBuild $(Build.BuildNumber) from the branch $(Build.SourceBranchName) at commit $(Build.SourceVersion). Corresponding package version is $(MSBuild_ExtApisPackageVersion)
122
+ InsertJsonValues : Microsoft.Build.vsman{$(MSBuild_ExtApisPackageVersion)+$(Build.SourceVersion)}=https://vsdrop.corp.microsoft.com/file/v1/Products/DevDiv/DotNet-msbuild-Trusted/$(Build.SourceBranchName)/$(Build.BuildNumber);Microsoft.Build.vsman,Microsoft.Build.Arm64.vsman{$(MSBuild_ExtApisPackageVersion)+$(Build.SourceVersion)}=https://vsdrop.corp.microsoft.com/file/v1/Products/DevDiv/DotNet-msbuild-Trusted/$(Build.SourceBranchName)/$(Build.BuildNumber);Microsoft.Build.Arm64.vsman,Microsoft.Build.UnGAC.vsman=https://vsdrop.corp.microsoft.com/file/v1/Products/DevDiv/DotNet-msbuild-Trusted/$(Build.SourceBranchName)/$(Build.BuildNumber);Microsoft.Build.UnGAC.vsman
123
+ InsertPayloadName : MSBuild $(Build.SourceBranchName) $(Build.BuildNumber)
124
+ SymbolsAgentPath : $(Pipeline.Workspace)\$(Build.DefinitionName)\Symbols
125
+ SymbolsEmailContacts : raines
126
+ SymbolsFeatureName : MSBuild
127
+ SymbolsSymwebProject : DDE
128
+ SymbolsUncPath : ' \\cpvsbuild\drops\MSBuild\symbols\$(Build.DefinitionName)\$(Build.BuildNumber)\symbols.archive'
129
+ jobs :
130
+ - job : PushPackages
131
+ displayName : Push Packages
132
+ condition : succeeded()
133
+ timeoutInMinutes : 0
134
+ templateContext :
135
+ inputs :
136
+ - input : pipelineArtifact
137
+ pipeline : ' MSBuild'
138
+ artifactName : ' BuildLogs_SourceBuild_Managed_Attempt1'
139
+ targetPath : ' $(Pipeline.Workspace)/BuildLogs_SourceBuild_Managed_Attempt1'
140
+ - input : pipelineArtifact
141
+ pipeline : ' MSBuild'
142
+ artifactName : ' build_Windows_NT_SBOM'
143
+ targetPath : ' $(Pipeline.Workspace)/build_Windows_NT_SBOM'
144
+ - input : pipelineArtifact
145
+ pipeline : ' MSBuild'
146
+ artifactName : ' xsd'
147
+ targetPath : ' $(Pipeline.Workspace)/xsd'
148
+ - input : pipelineArtifact
149
+ pipeline : ' MSBuild'
150
+ artifactName : ' PackageArtifacts'
151
+ targetPath : ' $(Build.ArtifactStagingDirectory)/PackageArtifacts'
152
+ steps :
153
+ - task : Powershell@2
154
+ name : PwshMungeExternalAPIsPkgVersion
155
+ displayName : Munge ExternalAPIs package version
156
+ inputs :
157
+ targetType : inline
158
+ script : |
159
+ $folder = "$(Build.ArtifactStagingDirectory)/PackageArtifacts/VS.ExternalAPIs.*.nupkg"
160
+ $packageFile = Get-ChildItem -Path $folder -Filter VS.ExternalAPIs.*.nupkg | Select-Object -First 1
161
+ $packageVersion = $packageFile.BaseName.TrimStart("VS.ExternalAPIs.MSBuild")
162
+ Write-Host "Setting MSBuild_ExtApisPackageVersion to '$packageVersion'"
163
+ Write-Host "##vso[task.setvariable variable=MSBuild_ExtApisPackageVersion]$($packageVersion)"
164
+ $folder = "$(Build.ArtifactStagingDirectory)/PackageArtifacts/Microsoft.NET.StringTools*.nupkg"
165
+ $packageFile = Get-ChildItem -Path $folder -Filter Microsoft.NET.StringTools*.nupkg | Select-Object -First 1
166
+ $packageVersion = $packageFile.BaseName.TrimStart("Microsoft.NET.StringTools")
167
+ Write-Host "Setting MicrosoftNETStringToolsPackageVersion to '$packageVersion'"
168
+ Write-Host "##vso[task.setvariable variable=MicrosoftNETStringToolsPackageVersion]$($packageVersion)"
169
+ - task : 1ES.PublishNuGet@1
170
+ displayName : ' Push MSBuild CoreXT packages'
171
+ inputs :
172
+ packageParentPath : ' $(Build.ArtifactStagingDirectory)'
173
+ packagesToPush : $(Build.ArtifactStagingDirectory)/PackageArtifacts/Microsoft.Build.*.nupkg;$(Build.ArtifactStagingDirectory)/PackageArtifacts/Microsoft.NET.StringTools.*.nupkg;$(Build.ArtifactStagingDirectory)/PackageArtifacts/VS.ExternalAPIs.*.nupkg
174
+ nuGetFeedType : internal
175
+ publishVstsFeed : VS
176
+ allowPackageConflicts : true
177
+ - template : /azure-pipelines/WIFtoPATauth.yml@self
178
+ parameters :
179
+ wifServiceConnectionName : azure-public/vside package push
180
+ deadPATServiceConnectionId : 42175e93-c771-4a4f-a132-3cca78f44b3b
181
+ - task : 1ES.PublishNuGet@1
182
+ displayName : ' Push MSBuild packages to VSSDK'
183
+ inputs :
184
+ packageParentPath : ' $(Build.ArtifactStagingDirectory)'
185
+ packagesToPush : $(Build.ArtifactStagingDirectory)/PackageArtifacts/Microsoft.Build.*.nupkg;$(Build.ArtifactStagingDirectory)/PackageArtifacts/Microsoft.NET.StringTools*.nupkg
186
+ nuGetFeedType : external
187
+ publishFeedCredentials : azure-public/vssdk
188
+ allowPackageConflicts : true
189
+ - task : PowerShell@2
190
+ name : PrintTargetBranch
191
+ inputs :
192
+ targetType : inline
193
+ script : |
194
+ Write-Host "InsertTargetBranch: $(InsertTargetBranch)"
195
+ - task : MicroBuildInsertVsPayload@4
196
+ name : MicroBuildInsertVsPayload_4
197
+ displayName : Insert VS Payload
198
+ inputs :
199
+ LinkWorkItemsToPR : true
200
+ TeamName : $(TeamName)
201
+ TeamEmail : $(TeamEmail)
202
+ TargetBranch : $(InsertTargetBranch)
203
+ InsertionPayloadName : $(InsertPayloadName)
204
+ PackagePropsValues : $(InsertPropsValues)
205
+ InsertionDescription : $(InsertDescription)
206
+ InsertionReviewers : MSBuild,VS ProTools
207
+ CustomScriptExecutionCommand : $(InsertCustomScriptExecutionCommand)
208
+ AutoCompletePR : true
209
+ AutoCompleteMergeStrategy : Squash
210
+ InsertionBuildPolicy : Request Perf DDRITs
0 commit comments