diff --git a/tools/packaging/packaging.psm1 b/tools/packaging/packaging.psm1 index eedbcfa351..6e501fe31e 100644 --- a/tools/packaging/packaging.psm1 +++ b/tools/packaging/packaging.psm1 @@ -20,7 +20,7 @@ function Start-PSPackage { [string]$Name = "powershell", # Ubuntu, CentOS, Fedora, macOS, and Windows packages are supported - [ValidateSet("deb", "osxpkg", "rpm", "msi", "zip", "AppImage", "nupkg", "tar")] + [ValidateSet("deb", "osxpkg", "rpm", "msi", "zip", "AppImage", "nupkg", "tar", "tar-arm")] [string[]]$Type, # Generate windows downlevel package @@ -33,10 +33,6 @@ function Start-PSPackage { [Switch] $SkipReleaseChecks ) - # The package type 'deb-arm' is current disabled for '-Type' parameter because 'New-UnixPackage' doesn't support - # creating package for 'deb-arm'. It should be added back to the ValidateSet of '-Type' once the implementation - # of creating 'deb-arm' package is done. - DynamicParam { if ($Type -eq "zip") { # Add a dynamic parameter '-IncludeSymbols' when the specified package type is 'zip'. @@ -62,7 +58,7 @@ function Start-PSPackage { # Runtime and Configuration settings required by the package ($Runtime, $Configuration) = if ($WindowsRuntime) { $WindowsRuntime, "Release" - } elseif ($Type -eq "deb-arm") { + } elseif ($Type -eq "tar-arm") { New-PSOptions -Configuration "Release" -Runtime "Linux-ARM" -WarningAction SilentlyContinue | ForEach-Object { $_.Runtime, $_.Configuration } } else { New-PSOptions -Configuration "Release" -WarningAction SilentlyContinue | ForEach-Object { $_.Runtime, $_.Configuration } @@ -79,7 +75,7 @@ function Start-PSPackage { $Script:Options = Get-PSOptions $crossGenCorrect = $false - if ($Type -eq "deb-arm") { + if ($Type -eq "tar-arm") { # crossgen doesn't support arm32 yet $crossGenCorrect = $true } @@ -154,7 +150,7 @@ function Start-PSPackage { $Source = New-TempFolder $symbolsSource = New-TempFolder - try + try { # Copy files which go into the root package Get-ChildItem -Path $publishSource | Copy-Item -Destination $Source -Recurse @@ -287,7 +283,7 @@ function Start-PSPackage { New-NugetPackage @Arguments } } - 'tar' { + "tar" { $Arguments = @{ PackageSourcePath = $Source Name = $Name @@ -299,6 +295,19 @@ function Start-PSPackage { New-TarballPackage @Arguments } } + "tar-arm" { + $Arguments = @{ + PackageSourcePath = $Source + Name = $Name + Version = $Version + Force = $Force + Architecture = "arm32" + } + + if ($PSCmdlet.ShouldProcess("Create tar.gz Package")) { + New-TarballPackage @Arguments + } + } 'deb' { $Arguments = @{ Type = 'deb' @@ -346,15 +355,18 @@ function New-TarballPackage { # Must start with 'powershell' but may have any suffix [Parameter(Mandatory)] [ValidatePattern("^powershell")] - [string]$Name, + [string] $Name, [Parameter(Mandatory)] - [string]$Version, + [string] $Version, + + [Parameter()] + [string] $Architecture = "x64", [switch] $Force ) - $packageName = "$Name-$Version-{0}-x64.tar.gz" + $packageName = "$Name-$Version-{0}-$Architecture.tar.gz" if ($Environment.IsWindows) { throw "Must be on Linux or macOS to build 'tar.gz' packages!" } elseif ($Environment.IsLinux) { diff --git a/tools/travis.ps1 b/tools/travis.ps1 index dc7815ae02..b152d3e9df 100644 --- a/tools/travis.ps1 +++ b/tools/travis.ps1 @@ -19,23 +19,23 @@ function Send-DailyWebHook { log "Sending DailyWebHook with result '$result'." $webhook = $env:WebHookUrl - + $Body = @{ 'text'= @" -Build Result: $result
+Build Result: $result
OS Type: $($PSVersionTable.OS)
Build $env:TRAVIS_BUILD_NUMBER
Job $env:TRAVIS_JOB_NUMBER "@ } - + $params = @{ Headers = @{'accept'='application/json'} Body = $Body | convertto-json Method = 'Post' - URI = $webhook + URI = $webhook } - + Invoke-RestMethod @params } else @@ -126,7 +126,7 @@ function Set-DailyBuildBadge $headers["Authorization"] = "SharedKey " + $storageAccountName + ":" + $signature - if ( $PSCmdlet.ShouldProcess("$signaturestring")) + if ( $PSCmdlet.ShouldProcess("$signaturestring")) { # if this fails, it will throw, you can't check the response for a success code $response = Invoke-RestMethod -Uri $Url -Method $method -headers $headers -Body $body -ContentType "image/svg+xml" @@ -174,17 +174,17 @@ elseif($Stage -eq 'Build') $output = Split-Path -Parent (Get-PSOutput -Options (New-PSOptions)) $originalProgressPreference = $ProgressPreference - $ProgressPreference = 'SilentlyContinue' + $ProgressPreference = 'SilentlyContinue' try { ## We use CrossGen build to run tests only if it's the daily build. Start-PSBuild -CrossGen -PSModuleRestore } finally{ - $ProgressPreference = $originalProgressPreference + $ProgressPreference = $originalProgressPreference } - $pesterParam = @{ - 'binDir' = $output + $pesterParam = @{ + 'binDir' = $output 'PassThru' = $true 'Terse' = $true } @@ -222,7 +222,7 @@ elseif($Stage -eq 'Build') } try { - Start-PSxUnit + Start-PSxUnit } catch { $result = "FAIL" @@ -253,8 +253,11 @@ elseif($Stage -eq 'Build') { log "pushing $package to $env:NUGET_URL" Start-NativeExecution -sb {dotnet nuget push $package --api-key $env:NUGET_KEY --source "$env:NUGET_URL/api/v2/package"} -IgnoreExitcode - } + } } + # Create and package Raspbian .tgz + Start-PSBuild -Clean -Runtime linux-arm + Start-PSPackage @packageParams -Type tar-arm -SkipReleaseChecks } # if the tests did not pass, throw the reason why