forked from PowerShell/PowerShell
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathPowerShellPackage.ps1
More file actions
66 lines (54 loc) · 2.08 KB
/
Copy pathPowerShellPackage.ps1
File metadata and controls
66 lines (54 loc) · 2.08 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
# 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
[string] $destination = '/mnt',
[ValidatePattern("^v\d+\.\d+\.\d+(-\w+(\.\d+)?)?$")]
[ValidateNotNullOrEmpty()]
[string]$ReleaseTag,
[ValidateSet("zip", "tar")]
[string[]]$ExtraPackage
)
# We must build in /PowerShell
# cleanup the folder but don't delete it or the build agent will loose ownership of the folder
Get-ChildItem -Path /PowerShell/* -Attributes Hidden,Normal,Directory | Remove-Item -Recurse -Force
# clone the repositor to the location we must build from
git clone $location /PowerShell
$releaseTagParam = @{}
if ($ReleaseTag)
{
$releaseTagParam = @{ 'ReleaseTag' = $ReleaseTag }
}
Push-Location
try {
Set-Location /PowerShell
git submodule update --init --recursive --quiet
Import-Module "/PowerShell/build.psm1"
Import-Module "/PowerShell/tools/packaging"
Start-PSBootstrap -Package -NoSudo
Start-PSBuild -Crossgen -PSModuleRestore @releaseTagParam
Start-PSPackage @releaseTagParam
switch ($ExtraPackage)
{
"zip" { Start-PSPackage -Type zip @releaseTagParam }
"tar" { Start-PSPackage -Type tar @releaseTagParam }
}
}
finally
{
Pop-Location
}
$linuxPackages = Get-ChildItem "/PowerShell/powershell*" -Include *.pkg,*.zip,*.tar.gz
foreach ($linuxPackage in $linuxPackages)
{
$filePath = $linuxPackage.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
}