Move to BYOC queues
- aspnet/AspNetCore-Internal#2033 - use conditions matching aspnet/Extensions and dotnet/Arcade - e.g.05cb24592a/azure-pipelines.yml (L49-L54)- install necessary Build Tools for Visual Studio 2019 components and workloads on CI - revert part of85ae18c723because multiple editions of VS 2019 are now publicly available - that is, restore support for multiple editions in InstallVisualStudio.ps1 - update InstallVisualStudio.ps1 to - support BuildTools edition of VS 2019 nit: merge a couple of Windows build steps - support automatically updating latest version of a VS edition on the machine - include `-Quiet` option for a completely non-interactive installation
This commit is contained in:
parent
1f63f25508
commit
5fa1c241ec
|
|
@ -6,7 +6,9 @@
|
||||||
# jobDisplayName: string
|
# jobDisplayName: string
|
||||||
# The friendly job name to display in the UI. Defaults to the name of the OS.
|
# The friendly job name to display in the UI. Defaults to the name of the OS.
|
||||||
# poolName: string
|
# poolName: string
|
||||||
# The name of the VSTS agent queue to use.
|
# The name of the Azure DevOps agent pool to use.
|
||||||
|
# poolVmImage: string
|
||||||
|
# The name of a virtual machine image to use. Primarily of interest when using the Hosted pools.
|
||||||
# agentOs: string
|
# agentOs: string
|
||||||
# Used in templates to define variables which are OS specific. Typically from the set { Windows, Linux, macOS }
|
# Used in templates to define variables which are OS specific. Typically from the set { Windows, Linux, macOS }
|
||||||
# buildArgs: string
|
# buildArgs: string
|
||||||
|
|
@ -47,6 +49,7 @@
|
||||||
parameters:
|
parameters:
|
||||||
agentOs: 'Windows'
|
agentOs: 'Windows'
|
||||||
poolName: ''
|
poolName: ''
|
||||||
|
poolVmImage: ''
|
||||||
buildArgs: ''
|
buildArgs: ''
|
||||||
configuration: 'Release'
|
configuration: 'Release'
|
||||||
beforeBuild: []
|
beforeBuild: []
|
||||||
|
|
@ -91,10 +94,12 @@ jobs:
|
||||||
${{ if ne(parameters.poolName, '') }}:
|
${{ if ne(parameters.poolName, '') }}:
|
||||||
name: ${{ parameters.poolName }}
|
name: ${{ parameters.poolName }}
|
||||||
${{ if and(eq(parameters.poolName, ''), eq(parameters.agentOs, 'Windows')) }}:
|
${{ if and(eq(parameters.poolName, ''), eq(parameters.agentOs, 'Windows')) }}:
|
||||||
${{ if eq(variables['System.TeamProject'], 'internal') }}:
|
${{ if or(eq(variables['System.TeamProject'], 'public'), in(variables['Build.Reason'], 'PullRequest')) }}:
|
||||||
name: dotnet-internal-vs2019-preview
|
name: NetCorePublic-Int-Pool
|
||||||
${{ if ne(variables['System.TeamProject'], 'internal') }}:
|
queue: BuildPool.Windows.10.Amd64.VS2019.BT.Open
|
||||||
name: dotnet-external-vs2019-preview
|
${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
|
||||||
|
name: NetCoreInternal-Int-Pool
|
||||||
|
queue: BuildPool.Windows.10.Amd64.VS2019.BT
|
||||||
variables:
|
variables:
|
||||||
AgentOsName: ${{ parameters.agentOs }}
|
AgentOsName: ${{ parameters.agentOs }}
|
||||||
ASPNETCORE_TEST_LOG_MAXPATH: "200" # Keep test log file name length low enough for artifact zipping
|
ASPNETCORE_TEST_LOG_MAXPATH: "200" # Keep test log file name length low enough for artifact zipping
|
||||||
|
|
@ -115,20 +120,25 @@ jobs:
|
||||||
steps:
|
steps:
|
||||||
- checkout: self
|
- checkout: self
|
||||||
clean: true
|
clean: true
|
||||||
|
- ${{ if eq(parameters.agentOs, 'Windows') }}:
|
||||||
|
- powershell: ./eng/scripts/InstallVisualStudio.ps1 -Edition BuildTools -Quiet
|
||||||
|
displayName: Install Build Tools for Visual Studio 2019
|
||||||
- ${{ if eq(parameters.installNodeJs, 'true') }}:
|
- ${{ if eq(parameters.installNodeJs, 'true') }}:
|
||||||
- task: NodeTool@0
|
- task: NodeTool@0
|
||||||
displayName: Install Node 10.x
|
displayName: Install Node 10.x
|
||||||
inputs:
|
inputs:
|
||||||
versionSpec: 10.x
|
versionSpec: 10.x
|
||||||
- ${{ if and(eq(parameters.installJdk, 'true'), eq(parameters.agentOs, 'Windows')) }}:
|
- ${{ if and(eq(parameters.installJdk, 'true'), eq(parameters.agentOs, 'Windows')) }}:
|
||||||
- powershell: ./eng/scripts/InstallJdk.ps1 '11.0.1'
|
- powershell: |
|
||||||
|
./eng/scripts/InstallJdk.ps1 '11.0.1'
|
||||||
|
Write-Host "##vso[task.prependpath]$env:JAVA_HOME\bin"
|
||||||
|
|
||||||
displayName: Install JDK 11
|
displayName: Install JDK 11
|
||||||
- powershell: Write-Host "##vso[task.prependpath]$env:JAVA_HOME\bin"
|
- powershell: |
|
||||||
displayName: Prepend JAVA bin folder to the PATH.
|
Write-Host "##vso[task.setvariable variable=SeleniumProcessTrackingFolder]$(BuildDirectory)\obj\selenium\"
|
||||||
- powershell: Write-Host "##vso[task.setvariable variable=SeleniumProcessTrackingFolder]$(BuildDirectory)\obj\selenium\"
|
./eng/scripts/InstallGoogleChrome.ps1
|
||||||
displayName: Add Selenium process tracking folder environment variable
|
|
||||||
- powershell: ./eng/scripts/InstallGoogleChrome.ps1
|
displayName: Install Chrome
|
||||||
displayName: Install chrome
|
|
||||||
- ${{ if and(eq(variables['System.TeamProject'], 'internal'), eq(parameters.agentOs, 'Windows'), eq(parameters.codeSign, 'true')) }}:
|
- ${{ if and(eq(variables['System.TeamProject'], 'internal'), eq(parameters.agentOs, 'Windows'), eq(parameters.codeSign, 'true')) }}:
|
||||||
- task: MicroBuildSigningPlugin@1
|
- task: MicroBuildSigningPlugin@1
|
||||||
displayName: Install MicroBuild Signing plugin
|
displayName: Install MicroBuild Signing plugin
|
||||||
|
|
|
||||||
|
|
@ -3,46 +3,40 @@
|
||||||
Installs or updates Visual Studio on a local developer machine.
|
Installs or updates Visual Studio on a local developer machine.
|
||||||
.DESCRIPTION
|
.DESCRIPTION
|
||||||
This installs Visual Studio along with all the workloads required to contribute to this repository.
|
This installs Visual Studio along with all the workloads required to contribute to this repository.
|
||||||
|
.PARAMETER Edition
|
||||||
|
Selects which 'offering' of Visual Studio to install. Must be one of these values:
|
||||||
|
BuildTools
|
||||||
|
Community
|
||||||
|
Professional
|
||||||
|
Enterprise (the default)
|
||||||
.PARAMETER InstallPath
|
.PARAMETER InstallPath
|
||||||
The location of Visual Studio
|
The location on disk where Visual Studio should be installed or updated. Default path is location of latest
|
||||||
|
existing installation of the specified edition, if any. If that VS edition is not currently installed, default
|
||||||
|
path is '${env:ProgramFiles(x86)}\Microsoft Visual Studio\2019\`$Edition".
|
||||||
.PARAMETER Passive
|
.PARAMETER Passive
|
||||||
Run the installer without requiring interaction.
|
Run the installer without requiring interaction.
|
||||||
|
.PARAMETER Quiet
|
||||||
|
Run the installer without UI and wait for installation to complete.
|
||||||
.LINK
|
.LINK
|
||||||
https://visualstudio.com
|
https://visualstudio.com
|
||||||
https://github.com/aspnet/AspNetCore/blob/master/docs/BuildFromSource.md
|
https://github.com/aspnet/AspNetCore/blob/master/docs/BuildFromSource.md
|
||||||
.EXAMPLE
|
.EXAMPLE
|
||||||
To install VS 2019 Preview, run this command in PowerShell:
|
To install VS 2019 Enterprise, run this command in PowerShell:
|
||||||
|
|
||||||
.\InstallVisualStudio.ps1
|
.\InstallVisualStudio.ps1
|
||||||
#>
|
#>
|
||||||
[CmdletBinding(DefaultParameterSetName = 'Default')]
|
[CmdletBinding(DefaultParameterSetName = 'Default')]
|
||||||
param(
|
param(
|
||||||
# TODO - once VS 2019 16.0 RTM is released, make this a parameter again
|
[ValidateSet('BuildTools','Community', 'Professional', 'Enterprise')]
|
||||||
# .PARAMETER Edition
|
[string]$Edition = 'Enterprise',
|
||||||
# Must be one of these values:
|
|
||||||
|
|
||||||
# Community
|
|
||||||
# Professional
|
|
||||||
# Enterprise
|
|
||||||
|
|
||||||
# Selects which 'offering' of Visual Studio to install.
|
|
||||||
|
|
||||||
# [ValidateSet('Community', 'Professional', 'Enterprise')]
|
|
||||||
# [string]$Edition,
|
|
||||||
[string]$InstallPath,
|
[string]$InstallPath,
|
||||||
[switch]$Passive
|
[switch]$Passive,
|
||||||
|
[switch]$Quiet
|
||||||
)
|
)
|
||||||
|
|
||||||
# VS previews are only available publicly as 'Enterprise' versions. They should be available to the community to use without a paid license.
|
if ($Passive -and $Quiet) {
|
||||||
$Edition = 'Enterprise'
|
Write-Host "The -Passive and -Quiet options cannot be used together." -f Red
|
||||||
|
|
||||||
if (-not $Edition) {
|
|
||||||
Write-Host "You must specify a value for the -Edition parameter which selects the kind of Visual Studio to install." -f Red
|
|
||||||
Write-Host "Run ``Get-Help $PSCommandPath`` for more details." -f Red
|
Write-Host "Run ``Get-Help $PSCommandPath`` for more details." -f Red
|
||||||
Write-Host ""
|
|
||||||
Write-Host "Example: ./InstallVisualStudio -Edition Community" -f Red
|
|
||||||
Write-Host ""
|
|
||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -54,35 +48,57 @@ mkdir $intermedateDir -ErrorAction Ignore | Out-Null
|
||||||
|
|
||||||
$bootstrapper = "$intermedateDir\vsinstaller.exe"
|
$bootstrapper = "$intermedateDir\vsinstaller.exe"
|
||||||
$ProgressPreference = 'SilentlyContinue' # Workaround PowerShell/PowerShell#2138
|
$ProgressPreference = 'SilentlyContinue' # Workaround PowerShell/PowerShell#2138
|
||||||
Invoke-WebRequest -Uri "https://aka.ms/vs/16/pre/vs_$($Edition.ToLowerInvariant()).exe" -OutFile $bootstrapper
|
Invoke-WebRequest -Uri "https://aka.ms/vs/16/release/vs_$($Edition.ToLowerInvariant()).exe" -OutFile $bootstrapper
|
||||||
|
|
||||||
|
$productId = "Microsoft.VisualStudio.Product.$Edition"
|
||||||
|
if (-not $InstallPath) {
|
||||||
|
$vsWhere = "${env:ProgramFiles(x86)}\Microsoft Visual Studio\Installer\vswhere.exe"
|
||||||
|
if (Test-Path $vsWhere)
|
||||||
|
{
|
||||||
|
$InstallPath = &$vsWhere -version '[16,17)' -latest -prerelease -products $productId -property installationPath
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (-not $InstallPath) {
|
if (-not $InstallPath) {
|
||||||
# $InstallPath = "${env:ProgramFiles(x86)}\Microsoft Visual Studio\2019\$Edition"
|
$InstallPath = "${env:ProgramFiles(x86)}\Microsoft Visual Studio\2019\$Edition"
|
||||||
$InstallPath = "${env:ProgramFiles(x86)}\Microsoft Visual Studio\2019\Preview"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# no backslashes - this breaks the installer
|
# no backslashes - this breaks the installer
|
||||||
$InstallPath = $InstallPath.TrimEnd('\')
|
$InstallPath = $InstallPath.TrimEnd('\')
|
||||||
|
|
||||||
[string[]] $arguments = @()
|
[string[]] $arguments = @()
|
||||||
|
|
||||||
if (Test-path $InstallPath) {
|
if (Test-path $InstallPath) {
|
||||||
$arguments += 'modify'
|
$arguments += 'modify'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$responseFile = "$PSScriptRoot\vs.json"
|
||||||
|
if ("$Edition" -eq "BuildTools") {
|
||||||
|
$responseFile = "$PSScriptRoot\vs.buildtools.json"
|
||||||
|
}
|
||||||
|
|
||||||
$arguments += `
|
$arguments += `
|
||||||
'--productId', "Microsoft.VisualStudio.Product.$Edition", `
|
'--productId', $productId, `
|
||||||
'--installPath', "`"$InstallPath`"", `
|
'--installPath', "`"$InstallPath`"", `
|
||||||
'--in', "$PSScriptRoot\vs.json", `
|
'--in', "`"$responseFile`"", `
|
||||||
'--norestart'
|
'--norestart'
|
||||||
|
|
||||||
if ($Passive) {
|
if ($Passive) {
|
||||||
$arguments += '--passive'
|
$arguments += '--passive'
|
||||||
}
|
}
|
||||||
|
if ($Quiet) {
|
||||||
|
$arguments += '--quiet', '--wait'
|
||||||
|
}
|
||||||
|
|
||||||
Write-Host ""
|
Write-Host ""
|
||||||
Write-Host "Installing Visual Studio 2019 $Edition" -f Magenta
|
Write-Host "Installing Visual Studio 2019 $Edition" -f Magenta
|
||||||
Write-Host ""
|
Write-Host ""
|
||||||
Write-Host "Running '$bootstrapper $arguments'"
|
Write-Host "Running '$bootstrapper $arguments'"
|
||||||
|
|
||||||
& $bootstrapper @arguments
|
$process = Start-Process -FilePath "$bootstrapper" -ArgumentList $arguments `
|
||||||
|
-PassThru -RedirectStandardError "$intermedateDir\errors.txt" -Verbose -Wait
|
||||||
|
if ($process.ExitCode -ne 0) {
|
||||||
|
Get-Content "$intermedateDir\errors.txt" | Write-Error
|
||||||
|
}
|
||||||
|
|
||||||
|
Remove-Item "$intermedateDir\errors.txt" -errorAction SilentlyContinue
|
||||||
|
exit $process.ExitCode
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,30 @@
|
||||||
|
{
|
||||||
|
"channelUri": "https://aka.ms/vs/16/pre/channel",
|
||||||
|
"channelId": "VisualStudio.16.Preview",
|
||||||
|
"includeRecommended": false,
|
||||||
|
"addProductLang": [
|
||||||
|
"en-US"
|
||||||
|
],
|
||||||
|
"add": [
|
||||||
|
"Microsoft.Net.Component.4.6.1.TargetingPack",
|
||||||
|
"Microsoft.Net.Component.4.6.2.TargetingPack",
|
||||||
|
"Microsoft.Net.Component.4.7.1.TargetingPack",
|
||||||
|
"Microsoft.Net.Component.4.7.2.SDK",
|
||||||
|
"Microsoft.Net.Component.4.7.2.TargetingPack",
|
||||||
|
"Microsoft.Net.Component.4.7.TargetingPack",
|
||||||
|
"Microsoft.VisualStudio.Component.FSharp.MSBuild",
|
||||||
|
"Microsoft.VisualStudio.Component.NuGet",
|
||||||
|
"Microsoft.VisualStudio.Component.NuGet.BuildTools",
|
||||||
|
"Microsoft.VisualStudio.Component.VC.ATL",
|
||||||
|
"Microsoft.VisualStudio.Component.VC.Tools.x86.x64",
|
||||||
|
"Microsoft.VisualStudio.Component.VC.v141.ATL",
|
||||||
|
"Microsoft.VisualStudio.Component.VC.v141.x86.x64",
|
||||||
|
"Microsoft.VisualStudio.Component.Windows10SDK.17134",
|
||||||
|
"Microsoft.VisualStudio.Workload.ManagedDesktopBuildTools",
|
||||||
|
"Microsoft.VisualStudio.Workload.MSBuildTools",
|
||||||
|
"Microsoft.VisualStudio.Workload.NetCoreBuildTools",
|
||||||
|
"Microsoft.VisualStudio.Workload.VCTools",
|
||||||
|
"Microsoft.VisualStudio.Workload.VisualStudioExtensionBuildTools",
|
||||||
|
"Microsoft.VisualStudio.Workload.WebBuildTools"
|
||||||
|
]
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue