472b5f7bd1
The main purpose of this was to enable full symbols for windows release build. Also makes explicit where we are optimizing and where we are not optimizing due to https://github.com/dotnet/corefx/issues/29700
90 lines
2.9 KiB
PowerShell
90 lines
2.9 KiB
PowerShell
# Copyright (c) Microsoft Corporation. All rights reserved.
|
|
# Licensed under the MIT License.
|
|
|
|
# PowerShell Script to build and package PowerShell from specified form and branch
|
|
# Script is intented to use in Docker containers
|
|
# Ensure PowerShell is available in the provided image
|
|
|
|
param (
|
|
# Set default location to where VSTS cloned the repository locally.
|
|
[string] $location = $env:BUILD_REPOSITORY_LOCALPATH,
|
|
|
|
# Destination location of the package on docker host
|
|
[Parameter(Mandatory, ParameterSetName = 'Build')]
|
|
[string] $destination = '/mnt',
|
|
|
|
[Parameter(Mandatory, ParameterSetName = 'Build')]
|
|
[ValidatePattern("^v\d+\.\d+\.\d+(-\w+(\.\d+)?)?$")]
|
|
[ValidateNotNullOrEmpty()]
|
|
[string]$ReleaseTag,
|
|
|
|
[Parameter(ParameterSetName = 'Build')]
|
|
[ValidateSet("zip", "tar")]
|
|
[string[]]$ExtraPackage,
|
|
|
|
[Parameter(Mandatory, ParameterSetName = 'Bootstrap')]
|
|
[switch] $BootStrap,
|
|
|
|
[Parameter(Mandatory, ParameterSetName = 'Build')]
|
|
[switch] $Build
|
|
)
|
|
|
|
# We must build in /PowerShell
|
|
$repoRoot = '/PowerShell'
|
|
if ($BootStrap.IsPresent) {
|
|
$repoRoot = $location
|
|
}
|
|
|
|
if ($Build.IsPresent) {
|
|
# cleanup the folder but don't delete it or the build agent will loose ownership of the folder
|
|
Write-Verbose -Message "cleaning /PowerShell" -Verbose
|
|
Get-ChildItem -Path /PowerShell/* -Attributes Hidden, Normal, Directory | Remove-Item -Recurse -Force
|
|
|
|
# clone the repository to the location we must build from
|
|
Write-Verbose -Message "cloning to /PowerShell" -Verbose
|
|
git clone $location /PowerShell
|
|
$releaseTagParam = @{}
|
|
if ($ReleaseTag) {
|
|
$releaseTagParam = @{ 'ReleaseTag' = $ReleaseTag }
|
|
}
|
|
}
|
|
|
|
|
|
Push-Location
|
|
try {
|
|
Write-Verbose -Message "Init..." -Verbose
|
|
Set-Location $repoRoot
|
|
git submodule update --init --recursive --quiet
|
|
Import-Module "$repoRoot/build.psm1"
|
|
Import-Module "$repoRoot/tools/packaging"
|
|
Sync-PSTags -AddRemoteIfMissing
|
|
|
|
if ($BootStrap.IsPresent) {
|
|
Start-PSBootstrap -Package
|
|
}
|
|
|
|
if ($Build.IsPresent) {
|
|
Start-PSBuild -Configuration 'Release' -Crossgen -PSModuleRestore @releaseTagParam
|
|
|
|
Start-PSPackage @releaseTagParam
|
|
switch ($ExtraPackage) {
|
|
"tar" { Start-PSPackage -Type tar @releaseTagParam }
|
|
}
|
|
}
|
|
} finally {
|
|
Pop-Location
|
|
}
|
|
|
|
if ($Build.IsPresent) {
|
|
$macPackages = Get-ChildItem "$repoRoot/powershell*" -Include *.pkg, *.tar.gz
|
|
foreach ($macPackage in $macPackages) {
|
|
$filePath = $macPackage.FullName
|
|
$name = split-path -Leaf -Path $filePath
|
|
$extension = (Split-Path -Extension -Path $filePath).Replace('.', '')
|
|
Write-Verbose "Copying $filePath to $destination" -Verbose
|
|
Write-Host "##vso[artifact.upload containerfolder=results;artifactname=$name]$filePath"
|
|
Write-Host "##vso[task.setvariable variable=Package-$extension]$filePath"
|
|
Copy-Item -Path $filePath -Destination $destination -force
|
|
}
|
|
}
|