Skip to content
Merged
40 changes: 36 additions & 4 deletions tools/packaging/packaging.psm1
Original file line number Diff line number Diff line change
Expand Up @@ -655,7 +655,6 @@ function Start-PSPackage {
}
foreach ($Distro in $Script:RedhatFddDistributions) {
$Arguments["Distribution"] = $Distro
$Arguments["HostArchitecture"] = $HostArchitecture
if ($PSCmdlet.ShouldProcess("Create RPM Package for $Distro")) {
Write-Verbose -Verbose "Creating RPM Package for $Distro"
New-UnixPackage @Arguments
Expand Down Expand Up @@ -4330,6 +4329,7 @@ ${minSizeLinuxBuildFolder} = 'pwshLinuxBuildMinSize'
${arm32LinuxBuildFolder} = 'pwshLinuxBuildArm32'
${arm64LinuxBuildFolder} = 'pwshLinuxBuildArm64'
${amd64MarinerBuildFolder} = 'pwshMarinerBuildAmd64'
${arm64MarinerBuildFolder} = 'pwshMarinerBuildArm64'

<#
Used in Azure DevOps Yaml to package all the linux packages for a channel.
Expand Down Expand Up @@ -4409,6 +4409,8 @@ function Invoke-AzDevOpsLinuxPackageCreation {
Set-LinuxFilePermission -FilePath $filePermissionFile -RootPath "${env:SYSTEM_ARTIFACTSDIRECTORY}\${arm64LinuxBuildFolder}"
Start-PSPackage -Type tar-arm64 @releaseTagParam -LTS:$LTS
} elseif ($BuildType -eq 'rpm') {
# Generate mariner amd64 package
Write-Verbose -Verbose "Generating mariner amd64 package"
Restore-PSOptions -PSOptionsPath "${env:SYSTEM_ARTIFACTSDIRECTORY}\${amd64MarinerBuildFolder}-meta\psoptions.json"
$filePermissionFile = "${env:SYSTEM_ARTIFACTSDIRECTORY}\${amd64MarinerBuildFolder}-meta\linuxFilePermission.json"
Set-LinuxFilePermission -FilePath $filePermissionFile -RootPath "${env:SYSTEM_ARTIFACTSDIRECTORY}\${amd64MarinerBuildFolder}"
Expand All @@ -4418,6 +4420,18 @@ function Invoke-AzDevOpsLinuxPackageCreation {
Write-Verbose -Verbose "options.Top $($options.Top)"

Start-PSPackage -Type rpm-fxdependent @releaseTagParam -LTS:$LTS

# Generate mariner arm64 package
Write-Verbose -Verbose "Generating mariner arm64 package"
Restore-PSOptions -PSOptionsPath "${env:SYSTEM_ARTIFACTSDIRECTORY}\${arm64MarinerBuildFolder}-meta\psoptions.json"
$filePermissionFile = "${env:SYSTEM_ARTIFACTSDIRECTORY}\${arm64MarinerBuildFolder}-meta\linuxFilePermission.json"
Set-LinuxFilePermission -FilePath $filePermissionFile -RootPath "${env:SYSTEM_ARTIFACTSDIRECTORY}\${arm64MarinerBuildFolder}"

Write-Verbose -Verbose "---- rpm-fxdependent-arm64 ----"
Write-Verbose -Verbose "options.Output: $($options.Output)"
Write-Verbose -Verbose "options.Top $($options.Top)"

Start-PSPackage -Type rpm-fxdependent-arm64 @releaseTagParam -LTS:$LTS
}
}
catch {
Expand Down Expand Up @@ -4502,14 +4516,14 @@ function Invoke-AzDevOpsLinuxPackageBuild {
Remove-Item "${buildFolder}\*.pdb" -Force
Get-ChildItem -Path $buildFolder -Recurse -File | Export-LinuxFilePermission -FilePath "${buildFolder}-meta/linuxFilePermission.json" -RootPath ${buildFolder} -Force
} elseif ($BuildType -eq 'rpm') {
## Build for Mariner
## Build for Mariner amd64
$options = Get-PSOptions
Write-Verbose -Verbose "---- Mariner ----"
Write-Verbose -Verbose "---- Mariner x64 ----"
Write-Verbose -Verbose "options.Output: $($options.Output)"
Write-Verbose -Verbose "options.Top $($options.Top)"
$binDir = Join-Path -Path $options.Top -ChildPath 'bin'
if (Test-Path -Path $binDir) {
Write-Verbose -Verbose "Remove $binDir, to get a clean build for Mariner package"
Write-Verbose -Verbose "Remove $binDir, to get a clean build for Mariner x64 package"
Remove-Item -Path $binDir -Recurse -Force
}

Expand All @@ -4519,6 +4533,24 @@ function Invoke-AzDevOpsLinuxPackageBuild {
# Remove symbol files, xml document files.
Remove-Item "${buildFolder}\*.pdb", "${buildFolder}\*.xml" -Force
Get-ChildItem -Path $buildFolder -Recurse -File | Export-LinuxFilePermission -FilePath "${buildFolder}-meta/linuxFilePermission.json" -RootPath ${buildFolder} -Force

## Build for Mariner arm64
$options = Get-PSOptions
Write-Verbose -Verbose "---- Mariner arm64 ----"
Write-Verbose -Verbose "options.Output: $($options.Output)"
Write-Verbose -Verbose "options.Top $($options.Top)"
$binDir = Join-Path -Path $options.Top -ChildPath 'bin'
if (Test-Path -Path $binDir) {
Write-Verbose -Verbose "Remove $binDir, to get a clean build for Mariner arm64 package"
Remove-Item -Path $binDir -Recurse -Force
}

$buildParams['Runtime'] = 'fxdependent-linux-arm64'
$buildFolder = "${env:SYSTEM_ARTIFACTSDIRECTORY}/${arm64MarinerBuildFolder}"
Start-PSBuild -Clean @buildParams @releaseTagParam -Output $buildFolder -PSOptionsPath "${buildFolder}-meta/psoptions.json"
# Remove symbol files, xml document files.
Remove-Item "${buildFolder}\*.pdb", "${buildFolder}\*.xml" -Force
Get-ChildItem -Path $buildFolder -Recurse -File | Export-LinuxFilePermission -FilePath "${buildFolder}-meta/linuxFilePermission.json" -RootPath ${buildFolder} -Force
}
}
catch {
Expand Down
6 changes: 6 additions & 0 deletions tools/releaseBuild/azureDevOps/releaseBuild.yml
Original file line number Diff line number Diff line change
Expand Up @@ -194,6 +194,12 @@ stages:
unsignedBuildArtifactName: pwshMarinerBuildAmd64.tar.gz
signedBuildArtifactName: pwshMarinerBuildAmd64.tar.gz
signedArtifactContainer: authenticode-signed
linux-arm64-mariner:
runtime: linux-arm64-mariner
unsignedBuildArtifactContainer: pwshMarinerBuildArm64.tar.gz
unsignedBuildArtifactName: pwshMarinerBuildArm64.tar.gz
signedBuildArtifactName: pwshMarinerBuildArm64.tar.gz
signedArtifactContainer: authenticode-signed
linux-minsize:
runtime: linux-minsize
unsignedBuildArtifactContainer: pwshLinuxBuildMinSize.tar.gz
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,12 @@ jobs:
path: $(Build.ArtifactStagingDirectory)/linuxTars
displayName: Download mariner build

- task: DownloadPipelineArtifact@2
inputs:
artifact: pwshMarinerBuildArm64.tar.gz
path: $(Build.ArtifactStagingDirectory)/linuxTars
displayName: Download mariner arm64 build

- task: DownloadPipelineArtifact@2
inputs:
artifact: pwshLinuxBuildAlpine.tar.gz
Expand Down Expand Up @@ -87,6 +93,10 @@ jobs:
New-Item -Path $(Build.ArtifactStagingDirectory)/pwshMarinerBuildAmd64 -ItemType Directory
tar -xf $(Build.ArtifactStagingDirectory)/linuxTars/pwshMarinerBuildAmd64.tar.gz -C $(Build.ArtifactStagingDirectory)/pwshMarinerBuildAmd64

Write-Verbose -Verbose -Message "Expanding $(Build.ArtifactStagingDirectory)/linuxTars/pwshMarinerBuildArm64.tar.gz to $(Build.ArtifactStagingDirectory)/pwshMarinerBuildArm64"
New-Item -Path $(Build.ArtifactStagingDirectory)/pwshMarinerBuildArm64 -ItemType Directory
tar -xf $(Build.ArtifactStagingDirectory)/linuxTars/pwshMarinerBuildArm64.tar.gz -C $(Build.ArtifactStagingDirectory)/pwshMarinerBuildArm64

Write-Verbose -Verbose -Message "Expanding $(Build.ArtifactStagingDirectory)/linuxTars/pwshLinuxBuildAlpine.tar.gz/pwshLinuxBuild.tar.gz to $(Build.ArtifactStagingDirectory)/pwshLinuxBuildAlpine"
New-Item -Path $(Build.ArtifactStagingDirectory)/pwshLinuxBuildAlpine -ItemType Directory
tar -xf $(Build.ArtifactStagingDirectory)/linuxTars/pwshLinuxBuildAlpine.tar.gz/pwshLinuxBuild.tar.gz -C $(Build.ArtifactStagingDirectory)/pwshLinuxBuildAlpine
Expand Down Expand Up @@ -141,7 +151,12 @@ jobs:
- template: signBuildFiles.yml
parameters:
binLocation: pwshMarinerBuildAmd64
buildPrefixName: 'PowerShell Linux x64 Framework Dependent'
buildPrefixName: 'PowerShell Linux x64 (Mariner) Framework Dependent'

- template: signBuildFiles.yml
parameters:
binLocation: pwshMarinerBuildArm64
buildPrefixName: 'PowerShell Linux arm64 (Mariner) Framework Dependent'

- template: signBuildFiles.yml
parameters:
Expand Down
25 changes: 23 additions & 2 deletions tools/releaseBuild/azureDevOps/templates/linux-packaging.yml
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,15 @@ jobs:
artifact: authenticode-signed
path: $(Build.ArtifactStagingDirectory)/pwshMarinerBuildAmd64-signed
pattern: '**/pwshMarinerBuildAmd64.tar.gz'
displayName: Download mariner build
displayName: Download mariner amd64 build

- ${{ if eq(variables.build,'rpm') }} :
- task: DownloadPipelineArtifact@2
inputs:
artifact: authenticode-signed
path: $(Build.ArtifactStagingDirectory)/pwshMarinerBuildArm64-signed
pattern: '**/pwshMarinerBuildArm64.tar.gz'
displayName: Download mariner arm64 build

- ${{ if eq(variables.build,'alpine') }} :
- task: DownloadPipelineArtifact@2
Expand Down Expand Up @@ -110,7 +118,14 @@ jobs:
inputs:
artifact: pwshMarinerBuildAmd64-meta
path: $(Build.ArtifactStagingDirectory)/pwshMarinerBuildAmd64-meta
displayName: Download mariner build meta
displayName: Download mariner x64 build meta

- ${{ if eq(variables.build,'rpm') }} :
- task: DownloadPipelineArtifact@2
inputs:
artifact: pwshMarinerBuildArm64-meta
path: $(Build.ArtifactStagingDirectory)/pwshMarinerBuildArm64-meta
displayName: Download mariner arm64 build meta

- ${{ if eq(variables.build,'alpine') }} :
- task: DownloadPipelineArtifact@2
Expand Down Expand Up @@ -152,9 +167,15 @@ jobs:
}

if ('$(build)' -eq 'rpm') {
# for mariner x64
Write-Verbose -Verbose "Expanding $(Build.ArtifactStagingDirectory)/pwshMarinerBuildAmd64-signed/pwshMarinerBuildAmd64.tar.gz to $(Build.ArtifactStagingDirectory)/pwshMarinerBuildAmd64"
New-Item -Path $(Build.ArtifactStagingDirectory)/pwshMarinerBuildAmd64 -ItemType Directory
tar -xf $(Build.ArtifactStagingDirectory)/pwshMarinerBuildAmd64-signed/pwshMarinerBuildAmd64.tar.gz -C $(Build.ArtifactStagingDirectory)/pwshMarinerBuildAmd64

# for mariner arm64
Write-Verbose -Verbose "Expanding $(Build.ArtifactStagingDirectory)/pwshMarinerBuildArm64-signed/pwshMarinerBuildArm64.tar.gz to $(Build.ArtifactStagingDirectory)/pwshMarinerBuildArm64"
New-Item -Path $(Build.ArtifactStagingDirectory)/pwshMarinerBuildArm64 -ItemType Directory
tar -xf $(Build.ArtifactStagingDirectory)/pwshMarinerBuildArm64-signed/pwshMarinerBuildArm64.tar.gz -C $(Build.ArtifactStagingDirectory)/pwshMarinerBuildArm64
}

if ('$(build)' -eq 'alpine') {
Expand Down
32 changes: 31 additions & 1 deletion tools/releaseBuild/azureDevOps/templates/linux.yml
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,17 @@ jobs:
parameters:
BuildDropPath: '$(System.ArtifactsDirectory)/pwshMarinerBuildAmd64'
Build_Repository_Uri: $(Github_Build_Repository_Uri)
displayName: Mariner SBOM
displayName: Mariner x64 SBOM
PackageName: PowerShell Linux Framework Dependent
PackageVersion: $(Version)
sourceScanPath: '$(PowerShellRoot)/tools'

- ${{ if eq(variables.build,'rpm') }} :
- template: Sbom.yml@ComplianceRepo
parameters:
BuildDropPath: '$(System.ArtifactsDirectory)/pwshMarinerBuildArm64'
Build_Repository_Uri: $(Github_Build_Repository_Uri)
displayName: Mariner arm64 SBOM
PackageName: PowerShell Linux Framework Dependent
PackageVersion: $(Version)
sourceScanPath: '$(PowerShellRoot)/tools'
Expand Down Expand Up @@ -155,6 +165,12 @@ jobs:
tar -czvf $(System.ArtifactsDirectory)/pwshMarinerBuildAmd64.tar.gz *
displayName: Compress pwshMarinerBuildAmd64

- ${{ if eq(variables.build,'rpm') }} :
- pwsh: |
Set-Location '$(System.ArtifactsDirectory)/pwshMarinerBuildArm64'
tar -czvf $(System.ArtifactsDirectory)/pwshMarinerBuildArm64.tar.gz *
displayName: Compress pwshMarinerBuildArm64

- ${{ if eq(variables.build,'deb') }} :
- task: PublishPipelineArtifact@1
inputs:
Expand Down Expand Up @@ -225,6 +241,20 @@ jobs:
artifactName: pwshMarinerBuildAmd64-meta
retryCountOnTaskFailure: 2

- ${{ if eq(variables.build,'rpm') }} :
- task: PublishPipelineArtifact@1
inputs:
path: '$(System.ArtifactsDirectory)/pwshMarinerBuildArm64.tar.gz'
artifactName: pwshMarinerBuildArm64.tar.gz
retryCountOnTaskFailure: 2

- ${{ if eq(variables.build,'rpm') }} :
- task: PublishPipelineArtifact@1
inputs:
path: '$(System.ArtifactsDirectory)/pwshMarinerBuildArm64-meta'
artifactName: pwshMarinerBuildArm64-meta
retryCountOnTaskFailure: 2

- ${{ if eq(variables.build,'alpine') }} :
- task: PublishPipelineArtifact@1
inputs:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ steps:
- pwsh: |
$message = @()
Get-ChildItem $(System.ArtifactsDirectory)\* -recurse -filter *.rpm | ForEach-Object {
if($_.Name -notmatch 'powershell\-(preview-|lts-)?\d+\.\d+\.\d+(_[a-z]*\.\d+)?-1.(rh|cm).x86_64\.rpm')
if($_.Name -notmatch 'powershell\-(preview-|lts-)?\d+\.\d+\.\d+(_[a-z]*\.\d+)?-1.(rh|cm).(x86_64|aarch64)\.rpm')
{
$messageInstance = "$($_.Name) is not a valid package name"
$message += $messageInstance
Expand Down