1- # Pipeline creates a dotnet with experimental msbuild dlls .
1+ # Pipeline creates experimental msbuild insertions .
22
33trigger : none # Prevents this pipeline from triggering on check-ins
44pr : none # don't run this on PR as well
55
66parameters :
7- # Dotnet installer channel from where to take the latest dotnet bits.
7+ # Dotnet installer channel from which to take the latest dotnet bits.
88 - name : DotnetInstallerChannel
99 displayName : Dotnet installer channel
10+ type : string
11+ default : ' none'
12+ # VS version for which to take the latest Retail MSBuild bits.
13+ - name : VSVersionName
14+ displayName : VS Version
1015 type : string
16+ default : ' none'
1117 # Branch from the MSBuild Build CI pipeline. Default: main
1218 # Top run for the branch would be used to create an experimental insertion.
1319 - name : MSBuildBranch
@@ -23,105 +29,192 @@ parameters:
2329variables :
2430 - name : _MsBuildCiPipelineId
2531 value : 9434
32+ - name : _MSBuildConfigFilePath
33+ value : " config/batmon/Q-Prod-Co3/Coordinator/ToolsReleaseConfig-GeneralPublic.json"
34+ - name : VSVersion
35+ value : ${{parameters.VSVersionName}}
2636
2737pool :
2838 vmImage : windows-latest
2939
30- steps :
31- - powershell : |
32- mkdir '$(System.ArtifactsDirectory)/installer'
33-
34- $dotnetChannel = '${{parameters.DotnetInstallerChannel}}'
35- $sdks = "dotnet-sdk-win-x64.zip", "dotnet-sdk-linux-x64.tar.gz"
36-
37- foreach ($sdk in $sdks)
38- {
39- Write-Host "Downloading dotnet $sdk from channel $dotnetChannel"
40- Invoke-WebRequest `
41- -Uri "https://aka.ms/dotnet/$dotnetChannel/daily/$sdk" `
42- -OutFile "$(System.ArtifactsDirectory)/installer/$sdk"
43- }
44- mkdir '$(Pipeline.Workspace)/artifacts'
45-
46- displayName : Download latest dotnet sdks
40+ resources :
41+ repositories :
42+ - repository : CloudBuildConfig
43+ type : git
44+ name : CloudBuild/CloudBuildConfig
45+ endpoint : CloudBuild_Test
46+ ref : refs/heads/main
4747
48- # Download latest build artifacts for a branch from MSBuild Build CI
49- - ${{ if eq(parameters.MSBuildBuildID, 'default') }} :
50- - task : DownloadBuildArtifacts@1
51- inputs :
52- buildType : specific
53- project : DevDiv
54- pipeline : $(_MsBuildCiPipelineId)
55- buildVersionToDownload : latestFromBranch
56- branchName : ' ${{parameters.MSBuildBranch}}'
57- artifactName : bin
58- downloadPath : ' $(System.ArtifactsDirectory)/msbuild/artifacts/bin'
59- itemPattern : " MSBuild.Bootstrap/**"
60- displayName : Download latest msbuild from branch
48+ jobs :
49+ - job : CreateExpDotnet
50+ displayName : Create Experimental Dotnet
51+ condition : ne('${{ parameters.DotnetInstallerChannel }}', 'none')
52+ steps :
53+ - powershell : |
54+ mkdir '$(System.ArtifactsDirectory)/installer'
55+
56+ $dotnetChannel = '${{parameters.DotnetInstallerChannel}}'
57+ $sdks = "dotnet-sdk-win-x64.zip", "dotnet-sdk-linux-x64.tar.gz"
58+
59+ foreach ($sdk in $sdks)
60+ {
61+ Write-Host "Downloading dotnet $sdk from channel $dotnetChannel"
62+ Invoke-WebRequest `
63+ -Uri "https://aka.ms/dotnet/$dotnetChannel/daily/$sdk" `
64+ -OutFile "$(System.ArtifactsDirectory)/installer/$sdk"
65+ }
66+ mkdir '$(Pipeline.Workspace)/artifacts'
67+ displayName: Download latest dotnet sdks
6168
62- # Download build artifacts for MSBuild Build CI specific build
63- - ${{ if ne(parameters.MSBuildBuildID, 'default') }} :
6469 - task : DownloadBuildArtifacts@1
6570 inputs :
6671 buildType : specific
6772 project : DevDiv
6873 pipeline : $(_MsBuildCiPipelineId)
69- buildVersionToDownload : specific
70- buildId : ${{parameters.MSBuildBuildID}}
74+ ${{ if eq(parameters.MSBuildBuildID, 'default') }} :
75+ buildVersionToDownload : latestFromBranch
76+ branchName : ' ${{parameters.MSBuildBranch}}'
77+ ${{ else }} :
78+ buildVersionToDownload : specific
79+ buildId : ${{parameters.MSBuildBuildID}}
7180 artifactName : bin
7281 downloadPath : ' $(System.ArtifactsDirectory)/msbuild/artifacts/bin'
73- itemPattern : " MSBuild.Bootstrap/**"
74- displayName : Download specified msbuild build
75-
76- - powershell : |
77- $sdk = "dotnet-sdk-win-x64"
82+ displayName : Download msbuild artifacts
7883
79- Write-Host "Extracting $(System.ArtifactsDirectory)/installer/$sdk.zip"
80- Expand-Archive "$(System.ArtifactsDirectory)/installer/$sdk.zip" -DestinationPath "$(Pipeline.Workspace)/exp-dotnet/$sdk"
84+ - powershell : |
85+ $sdk = "dotnet-sdk-win-x64"
86+
87+ Write-Host "Extracting $(System.ArtifactsDirectory)/installer/$sdk.zip"
88+ Expand-Archive "$(System.ArtifactsDirectory)/installer/$sdk.zip" -DestinationPath "$(Pipeline.Workspace)/exp-dotnet/$sdk"
8189
82- $dotnetDirectory = Get-ChildItem -Directory -Path "$(Pipeline.Workspace)/exp-dotnet/$sdk/sdk"
83- $dotnetVersion = $dotnetDirectory.Name
84- Write-Host "Detected dotnet version: $dotnetVersion"
90+ $dotnetDirectory = Get-ChildItem -Directory -Path "$(Pipeline.Workspace)/exp-dotnet/$sdk/sdk"
91+ $dotnetVersion = $dotnetDirectory.Name
92+ Write-Host "Detected dotnet version: $dotnetVersion"
8593
86- Write-Host "Updating MSBuild dlls."
87- $(Build.SourcesDirectory)/scripts/Deploy-MSBuild.ps1 `
88- -destination "$(Pipeline.Workspace)/exp-dotnet/$sdk/sdk/$dotnetVersion" `
89- -bootstrapDirectory "$(System.ArtifactsDirectory)/msbuild/artifacts/bin/MSBuild.Bootstrap " `
90- -configuration Release `
91- -makeBackup $false
94+ Write-Host "Updating MSBuild dlls."
95+ $(Build.SourcesDirectory)/scripts/Deploy-MSBuild.ps1 `
96+ -destination "$(Pipeline.Workspace)/exp-dotnet/$sdk/sdk/$dotnetVersion" `
97+ -binDirectory "$(System.ArtifactsDirectory)/msbuild/artifacts/bin" `
98+ -configuration Release `
99+ -makeBackup $false
92100
93- Write-Host "Compressing dotnet sdk files"
94- Get-ChildItem -Path "$(Pipeline.Workspace)/exp-dotnet/$sdk" | Compress-Archive -DestinationPath "$(Pipeline.Workspace)/artifacts/$sdk.zip"
101+ Write-Host "Compressing dotnet sdk files"
102+ Get-ChildItem -Path "$(Pipeline.Workspace)/exp-dotnet/$sdk" | Compress-Archive -DestinationPath "$(Pipeline.Workspace)/artifacts/$sdk.zip"
95103
96- displayName : Dogfood msbuild dlls to dotnet sdk win-x64
104+ displayName: Dogfood msbuild dlls to dotnet sdk win-x64
97105
98- - powershell : |
99- $sdk = "dotnet-sdk-linux-x64"
106+ - powershell : |
107+ $sdk = "dotnet-sdk-linux-x64"
100108
101- mkdir "$(Pipeline.Workspace)/exp-dotnet/$sdk"
109+ mkdir "$(Pipeline.Workspace)/exp-dotnet/$sdk"
102110
103- Write-Host "Extracting $(System.ArtifactsDirectory)/installer/$sdk.tar.gz"
104- tar -xzvf "$(System.ArtifactsDirectory)/installer/$sdk.tar.gz" -C "$(Pipeline.Workspace)/exp-dotnet/$sdk"
111+ Write-Host "Extracting $(System.ArtifactsDirectory)/installer/$sdk.tar.gz"
112+ tar -xzvf "$(System.ArtifactsDirectory)/installer/$sdk.tar.gz" -C "$(Pipeline.Workspace)/exp-dotnet/$sdk"
105113
106- $dotnetDirectory = Get-ChildItem -Directory -Path $(Pipeline.Workspace)/exp-dotnet/$sdk/sdk
107- $dotnetVersion = $dotnetDirectory.Name
108- Write-Host "Detected dotnet version: $dotnetVersion"
114+ $dotnetDirectory = Get-ChildItem -Directory -Path $(Pipeline.Workspace)/exp-dotnet/$sdk/sdk
115+ $dotnetVersion = $dotnetDirectory.Name
116+ Write-Host "Detected dotnet version: $dotnetVersion"
109117
110- Write-Host "Updating MSBuild dlls."
111- $(Build.SourcesDirectory)/scripts/Deploy-MSBuild.ps1 `
112- -destination "$(Pipeline.Workspace)/exp-dotnet/$sdk/sdk/$dotnetVersion" `
113- -bootstrapDirectory "$(System.ArtifactsDirectory)/msbuild/artifacts/bin/MSBuild.Bootstrap " `
114- -configuration Release `
115- -makeBackup $false
118+ Write-Host "Updating MSBuild dlls."
119+ $(Build.SourcesDirectory)/scripts/Deploy-MSBuild.ps1 `
120+ -destination "$(Pipeline.Workspace)/exp-dotnet/$sdk/sdk/$dotnetVersion" `
121+ -binDirectory "$(System.ArtifactsDirectory)/msbuild/artifacts/bin" `
122+ -configuration Release `
123+ -makeBackup $false
116124
117- Write-Host "Compressing dotnet sdk files"
118- tar -czvf "$(Pipeline.Workspace)/artifacts/$sdk.tar.gz" -C "$(Pipeline.Workspace)/exp-dotnet/$sdk" .
119- displayName : Dogfood msbuild dlls to dotnet sdk linux-x64
120-
121- - task : PublishPipelineArtifact@1
122- inputs :
123- targetPath : ' $(Pipeline.Workspace)/artifacts'
124- artifactName : ExperimentalDotnet
125- parallel : true
126- condition : always()
127- displayName : Publish crank assests artifacts
125+ Write-Host "Compressing dotnet sdk files"
126+ tar -czvf "$(Pipeline.Workspace)/artifacts/$sdk.tar.gz" -C "$(Pipeline.Workspace)/exp-dotnet/$sdk" .
127+ displayName: Dogfood msbuild dlls to dotnet sdk linux-x64
128+
129+ - task : PublishPipelineArtifact@1
130+ inputs :
131+ targetPath : ' $(Pipeline.Workspace)/artifacts'
132+ artifactName : ExperimentalDotnet
133+ parallel : true
134+ condition : always()
135+ displayName : Publish crank assests artifacts
136+
137+
138+ - job : CreateExpMSBuild
139+ displayName : " Create Experimental MSBuild"
140+ condition : ne('${{ parameters.VSVersionName }}', 'none')
141+ steps :
142+ - checkout : self
143+
144+ - checkout : CloudBuildConfig
145+
146+ - powershell : |
147+ $json = (Get-Content "$(Build.SourcesDirectory)/CloudBuildConfig/$(_MSBuildConfigFilePath)" -Raw) | ConvertFrom-Json
148+ $MSBuildDropPath = $json.Tools.MSBuild.Locations
149+ Write-Host "##vso[task.setvariable variable=MSBuildDropPath]$MSBuildDropPath"
150+ Write-Host "MSBuild Drop Path directory: $MSBuildDropPath"
151+ displayName: Get Retail MSBuild Drop Path
152+
153+ - task : NuGetToolInstaller@1
154+ displayName : ' Install NuGet.exe'
155+
156+ - task : NuGetCommand@2
157+ displayName : Restore internal tools
158+ inputs :
159+ command : restore
160+ feedsToUse : config
161+ restoreSolution : ' $(Build.SourcesDirectory)\DotNet-msbuild-Trusted\eng\common\internal\Tools.csproj'
162+ nugetConfigPath : ' $(Build.SourcesDirectory)\DotNet-msbuild-Trusted\NuGet.config'
163+ restoreDirectory : ' $(Build.SourcesDirectory)\DotNet-msbuild-Trusted\.packages'
164+
165+ - powershell : |
166+ mkdir "$(Pipeline.Workspace)/artifacts"
167+
168+ $dropAppDirectory = Get-ChildItem -Directory -Path "$(Build.SourcesDirectory)/DotNet-msbuild-Trusted/.packages/drop.app"
169+ $dropAppVersion = $dropAppDirectory.Name
170+ Write-Host "Detected drop.exe version: $dropAppVersion"
171+
172+ $dropExePath = "$(Build.SourcesDirectory)/DotNet-msbuild-Trusted/.packages/drop.app/$dropAppVersion/lib/net45/drop.exe"
173+ Write-Host "Detected drop.exe path: $dropExePath"
174+
175+ Write-Host "Downloading VS msbuild"
176+ & "$dropExePath" get --patAuthEnvVar 'cloudbuild-token' -u "$(MSBuildDropPath)\$(VSVersion)" -d "$(System.ArtifactsDirectory)/VSMSBuildDrop"
177+ Write-Host "Download of VS msbuild finished"
178+
179+ Write-Host "Copying VS msbuild to $(Pipeline.Workspace)/VSMSBuild"
180+ Copy-Item -Path "$(System.ArtifactsDirectory)/VSMSBuildDrop/*" -Destination "$(Pipeline.Workspace)/VSMSBuild" -Recurse
181+ Write-Host "Copy of VS msbuild finished"
182+ displayName: Download msbuild vs drop
183+ env:
184+ cloudbuild-token: $(cloudbuild-token)
185+
186+ - task : DownloadBuildArtifacts@1
187+ inputs :
188+ buildType : specific
189+ project : DevDiv
190+ pipeline : $(_MsBuildCiPipelineId)
191+ ${{ if eq(parameters.MSBuildBuildID, 'default') }} :
192+ buildVersionToDownload : latestFromBranch
193+ branchName : ' ${{parameters.MSBuildBranch}}'
194+ ${{ else }} :
195+ buildVersionToDownload : specific
196+ buildId : ${{parameters.MSBuildBuildID}}
197+ artifactName : bin
198+ downloadPath : ' $(System.ArtifactsDirectory)/msbuild/artifacts/bin'
199+ displayName : Download msbuild artifacts
200+
201+ - powershell : |
202+ Write-Host "Updating MSBuild dlls."
203+ $(Build.SourcesDirectory)/DotNet-msbuild-Trusted/scripts/Deploy-MSBuild.ps1 `
204+ -destination "$(Pipeline.Workspace)/VSMSBuild/$(VSVersion)/MSBuild/Current/Bin" `
205+ -binDirectory "$(System.ArtifactsDirectory)/msbuild/artifacts/bin" `
206+ -configuration Release `
207+ -makeBackup $false
208+
209+ ls "$(Pipeline.Workspace)/VSMSBuild/$(VSVersion)"
210+ Write-Host "Compressing msbuild files"
211+ Get-ChildItem -Path "$(Pipeline.Workspace)/VSMSBuild/$(VSVersion)" | Compress-Archive -DestinationPath "$(Pipeline.Workspace)/artifacts/MSBuild.zip"
212+ displayName: Dogfood msbuild dlls
213+
214+ - task : PublishPipelineArtifact@1
215+ inputs :
216+ targetPath : ' $(Pipeline.Workspace)/artifacts'
217+ artifactName : ExperimentalMSBuild
218+ parallel : true
219+ condition : always()
220+ displayName : Publish crank assests artifacts
0 commit comments