8000 Add mariner arm64 package build to release build by anamnavi · Pull Request #19946 · PowerShell/PowerShell · GitHub
[go: up one dir, main page]

Skip to content

Add mariner arm64 package build to release build #19946

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 10 commits into from
Jul 20, 2023
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- 10000 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
0