8000 [release/v7.3.7] Add mariner arm64 package build to release build (#1… · PowerShell/PowerShell@3c7009c · GitHub
[go: up one dir, main page]

Skip to content

Commit 3c7009c

Browse files
authored
[release/v7.3.7] Add mariner arm64 package build to release build (#19946) (#20250)
1 parent b49b37a commit 3c7009c

File tree

6 files changed

+113
-9
lines changed

6 files changed

+113
-9
lines changed

tools/packaging/packaging.psm1

Lines changed: 36 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -575,7 +575,6 @@ function Start-PSPackage {
575575
}
576576
foreach ($Distro in $Script:RedhatFddDistributions) {
577577
$Arguments["Distribution"] = $Distro
578-
$Arguments["HostArchitecture"] = $HostArchitecture
579578
if ($PSCmdlet.ShouldProcess("Create RPM Package for $Distro")) {
580579
Write-Verbose -Verbose "Creating RPM Package for $Distro"
581580
New-UnixPackage @Arguments
@@ -4186,6 +4185,7 @@ ${minSizeLinuxBuildFolder} = 'pwshLinuxBuildMinSize'
41864185
${arm32LinuxBuildFolder} = 'pwshLinuxBuildArm32'
41874186
${arm64LinuxBuildFolder} = 'pwshLinuxBuildArm64'
41884187
${amd64MarinerBuildFolder} = 'pwshMarinerBuildAmd64'
4188+
${arm64MarinerBuildFolder} = 'pwshMarinerBuildArm64'
41894189

41904190
<#
41914191
Used in Azure DevOps Yaml to package all the linux packages for a channel.
@@ -4265,6 +4265,8 @@ function Invoke-AzDevOpsLinuxPackageCreation {
42654265
Set-LinuxFilePermission -FilePath $filePermissionFile -RootPath "${env:SYSTEM_ARTIFACTSDIRECTORY}\${arm64LinuxBuildFolder}"
42664266
Start-PSPackage -Type tar-arm64 @releaseTagParam -LTS:$LTS
42674267
} elseif ($BuildType -eq 'rpm') {
4268+
# Generate mariner amd64 package
4269+
Write-Verbose -Verbose "Generating mariner amd64 package"
42684270
Restore-PSOptions -PSOptionsPath "${env:SYSTEM_ARTIFACTSDIRECTORY}\${amd64MarinerBuildFolder}-meta\psoptions.json"
42694271
$filePermissionFile = "${env:SYSTEM_ARTIFACTSDIRECTORY}\${amd64MarinerBuildFolder}-meta\linuxFilePermission.json"
42704272
Set-LinuxFilePermission -FilePath $filePermissionFile -RootPath "${env:SYSTEM_ARTIFACTSDIRECTORY}\${amd64MarinerBuildFolder}"
@@ -4274,6 +4276,18 @@ function Invoke-AzDevOpsLinuxPackageCreation {
42744276
Write-Verbose -Verbose "options.Top $($options.Top)"
42754277

42764278
Start-PSPackage -Type rpm-fxdependent @releaseTagParam -LTS:$LTS
4279+
4280+
# Generate mariner arm64 package
4281+
Write-Verbose -Verbose "Generating mariner arm64 package"
4282+
Restore-PSOptions -PSOptionsPath "${env:SYSTEM_ARTIFACTSDIRECTORY}\${arm64MarinerBuildFolder}-meta\psoptions.json"
4283+
$filePermissionFile = "${env:SYSTEM_ARTIFACTSDIRECTORY}\${arm64MarinerBuildFolder}-meta\linuxFilePermission.json"
4284+
Set-LinuxFilePermission -FilePath $filePermissionFile -RootPath "${env:SYSTEM_ARTIFACTSDIRECTORY}\${arm64MarinerBuildFolder}"
4285+
4286+
Write-Verbose -Verbose "---- rpm-fxdependent-arm64 ----"
4287+
Write-Verbose -Verbose "options.Output: $($options.Output)"
4288+
Write-Verbose -Verbose "options.Top $($options.Top)"
4289+
4290+
Start-PSPackage -Type rpm-fxdependent-arm64 @releaseTagParam -LTS:$LTS
42774291
}
42784292
}
42794293
catch {
@@ -4358,14 +4372,14 @@ function Invoke-AzDevOpsLinuxPackageBuild {
43584372
Remove-Item "${buildFolder}\*.pdb" -Force
43594373
Get-ChildItem -Path $buildFolder -Recurse -File | Export-LinuxFilePermission -FilePath "${buildFolder}-meta/linuxFilePermission.json" -RootPath ${buildFolder} -Force
43604374
} elseif ($BuildType -eq 'rpm') {
4361-
## Build for Mariner
4375+
## Build for Mariner amd64
43624376
$options = Get-PSOptions
4363-
Write-Verbose -Verbose "---- Mariner ----"
4377+
Write-Verbose -Verbose "---- Mariner x64 ----"
43644378
Write-Verbose -Verbose "options.Output: $($options.Output)"
43654379
Write-Verbose -Verbose "options.Top $($options.Top)"
43664380
$binDir = Join-Path -Path $options.Top -ChildPath 'bin'
43674381
if (Test-Path -Path $binDir) {
4368-
Write-Verbose -Verbose "Remove $binDir, to get a clean build for Mariner package"
4382+
Write-Verbose -Verbose "Remove $binDir, to get a clean build for Mariner x64 package"
43694383
Remove-Item -Path $binDir -Recurse -Force
43704384
}
43714385

@@ -4375,6 +4389,24 @@ function Invoke-AzDevOpsLinuxPackageBuild {
43754389
# Remove symbol files, xml document files.
43764390
Remove-Item "${buildFolder}\*.pdb", "${buildFolder}\*.xml" -Force
43774391
Get-ChildItem -Path $buildFolder -Recurse -File | Export-LinuxFilePermission -FilePath "${buildFolder}-meta/linuxFilePermission.json" -RootPath ${buildFolder} -Force
4392+
4393+
## Build for Mariner arm64
4394+
$options = Get-PSOptions
4395+
Write-Verbose -Verbose "---- Mariner arm64 ----"
4396+
Write-Verbose -Verbose "options.Output: $($options.Output)"
4397+
Write-Verbose -Verbose "options.Top $($options.Top)"
4398+
$binDir = Join-Path -Path $options.Top -ChildPath 'bin'
4399+
if (Test-Path -Path $binDir) {
4400+
Write-Verbose -Verbose "Remove $binDir, to get a clean build for Mariner arm64 package"
4401+
Remove-Item -Path $binDir -Recurse -Force
4402+
}
4403+
4404+
$buildParams['Runtime'] = 'fxdependent-linux-arm64'
4405+
$buildFolder = "${env:SYSTEM_ARTIFACTSDIRECTORY}/${arm64MarinerBuildFolder}"
4406+
Start-PSBuild -Clean @buildParams @releaseTagParam -Output $buildFolder -PSOptionsPath "${buildFolder}-meta/psoptions.json"
4407+
# Remove symbol files, xml document files.
4408+
Remove-Item "${buildFolder}\*.pdb", "${buildFolder}\*.xml" -Force
4409+
Get-ChildItem -Path $buildFolder -Recurse -File | Export-LinuxFilePermission -FilePath "${buildFolder}-meta/linuxFilePermission.json" -RootPath ${buildFolder} -Force
43784410
}
43794411
}
43804412
catch {

tools/releaseBuild/azureDevOps/releaseBuild.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -192,6 +192,12 @@ stages:
192192
unsignedBuildArtifactName: pwshMarinerBuildAmd64.tar.gz
193193
signedBuildArtifactName: pwshMarinerBuildAmd64.tar.gz
194194
signedArtifactContainer: authenticode-signed
195+
linux-arm64-mariner:
196+
runtime: linux-arm64-mariner
197+
unsignedBuildArtifactContainer: pwshMarinerBuildArm64.tar.gz
198+
unsignedBuildArtifactName: pwshMarinerBuildArm64.tar.gz
199+
signedBuildArtifactName: pwshMarinerBuildArm64.tar.gz
200+
signedArtifactContainer: authenticode-signed
195201
linux-minsize:
196202
runtime: linux-minsize
197203
unsignedBuildArtifactContainer: pwshLinuxBuildMinSize.tar.gz

tools/releaseBuild/azureDevOps/templates/linux-authenticode-sign.yml

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,12 @@ jobs:
4848
path: $(Build.ArtifactStagingDirectory)/linuxTars
4949
displayName: Download mariner build
5050

51+
- task: DownloadPipelineArtifact@2
52+
inputs:
53+
artifact: pwshMarinerBuildArm64.tar.gz
54+
path: $(Build.ArtifactStagingDirectory)/linuxTars
55+
displayName: Download mariner arm64 build
56+
5157
- task: DownloadPipelineArtifact@2
5258
inputs:
5359
artifact: pwshLinuxBuildAlpine.tar.gz
@@ -87,6 +93,10 @@ jobs:
8793
New-Item -Path $(Build.ArtifactStagingDirectory)/pwshMarinerBuildAmd64 -ItemType Directory
8894
tar -xf $(Build.ArtifactStagingDirectory)/linuxTars/pwshMarinerBuildAmd64.tar.gz -C $(Build.ArtifactStagingDirectory)/pwshMarinerBuildAmd64
8995
96+
Write-Verbose -Verbose -Message "Expanding $(Build.ArtifactStagingDirectory)/linuxTars/pwshMarinerBuildArm64.tar.gz to $(Build.ArtifactStagingDirectory)/pwshMarinerBuildArm64"
97+
New-Item -Path $(Build.ArtifactStagingDirectory)/pwshMarinerBuildArm64 -ItemType Directory
98+
tar -xf $(Build.ArtifactStagingDirectory)/linuxTars/pwshMarinerBuildArm64.tar.gz -C $(Build.ArtifactStagingDirectory)/pwshMarinerBuildArm64
99+
90100
Write-Verbose -Verbose -Message "Expanding $(Build.ArtifactStagingDirectory)/linuxTars/pwshLinuxBuildAlpine.tar.gz/pwshLinuxBuild.tar.gz to $(Build.ArtifactStagingDirectory)/pwshLinuxBuildAlpine"
91101
New-Item -Path $(Build.ArtifactStagingDirectory)/pwshLinuxBuildAlpine -ItemType Directory
92102
tar -xf $(Build.ArtifactStagingDirectory)/linuxTars/pwshLinuxBuildAlpine.tar.gz/pwshLinuxBuild.tar.gz -C $(Build.ArtifactStagingDirectory)/pwshLinuxBuildAlpine
@@ -141,7 +151,12 @@ jobs:
141151
- template: signBuildFiles.yml
142152
parameters:
143153
binLocation: pwshMarinerBuildAmd64
144-
buildPrefixName: 'PowerShell Linux x64 Framework Dependent'
154+
buildPrefixName: 'PowerShell Linux x64 (Mariner) Framework Dependent'
155+
156+
- template: signBuildFiles.yml
157+
parameters:
158+
binLocation: pwshMarinerBuildArm64
159+
buildPrefixName: 'PowerShell Linux arm64 (Mariner) Framework Dependent'
145160

146161
- template: signBuildFiles.yml
147162
parameters:

tools/releaseBuild/azureDevOps/templates/linux-packaging.yml

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,15 @@ jobs:
5959
artifact: authenticode-signed
6060
path: $(Build.ArtifactStagingDirectory)/pwshMarinerBuildAmd64-signed
6161
pattern: '**/pwshMarinerBuildAmd64.tar.gz'
62-
displayName: Download mariner build
62+
displayName: Download mariner amd64 build
63+
64+
- ${{ if eq(variables.build,'rpm') }} :
65+
- task: DownloadPipelineArtifact@2
66+
inputs:
67+
artifact: authenticode-signed
68+
path: $(Build.ArtifactStagingDirectory)/pwshMarinerBuildArm64-signed
69+
pattern: '**/pwshMarinerBuildArm64.tar.gz'
70+
displayName: Download mariner arm64 build
6371

6472
- ${{ if eq(variables.build,'alpine') }} :
6573
- task: DownloadPipelineArtifact@2
@@ -110,7 +118,14 @@ jobs:
110118
inputs:
111119
artifact: pwshMarinerBuildAmd64-meta
112120
path: $(Build.ArtifactStagingDirectory)/pwshMarinerBuildAmd64-meta
113-
displayName: Download mariner build meta
121+
displayName: Download mariner x64 build meta
122+
123+
- ${{ if eq(variables.build,'rpm') }} :
124+
- task: DownloadPipelineArtifact@2
125+
inputs:
126+
artifact: pwshMarinerBuildArm64-meta
127+
path: $(Build.ArtifactStagingDirectory)/pwshMarinerBuildArm64-meta
128+
displayName: Download mariner arm64 build meta
114129

115130
- ${{ if eq(variables.build,'alpine') }} :
116131
- task: DownloadPipelineArtifact@2
@@ -152,9 +167,15 @@ jobs:
152167
}
153168
154169
if ('$(build)' -eq 'rpm') {
170+
# for mariner x64
155171
Write-Verbose -Verbose "Expanding $(Build.ArtifactStagingDirectory)/pwshMarinerBuildAmd64-signed/pwshMarinerBuildAmd64.tar.gz to $(Build.ArtifactStagingDirectory)/pwshMarinerBuildAmd64"
156172
New-Item -Path $(Build.ArtifactStagingDirectory)/pwshMarinerBuildAmd64 -ItemType Directory
157173
tar -xf $(Build.ArtifactStagingDirectory)/pwshMarinerBuildAmd64-signed/pwshMarinerBuildAmd64.tar.gz -C $(Build.ArtifactStagingDirectory)/pwshMarinerBuildAmd64
174+
175+
# for mariner arm64
176+
Write-Verbose -Verbose "Expanding $(Build.ArtifactStagingDirectory)/pwshMarinerBuildArm64-signed/pwshMarinerBuildArm64.tar.gz to $(Build.ArtifactStagingDirectory)/pwshMarinerBuildArm64"
177+
New-Item -Path $(Build.ArtifactStagingDirectory)/pwshMarinerBuildArm64 -ItemType Directory
178+
tar -xf $(Build.ArtifactStagingDirectory)/pwshMarinerBuildArm64-signed/pwshMarinerBuildArm64.tar.gz -C $(Build.ArtifactStagingDirectory)/pwshMarinerBuildArm64
158179
}
159180
160181
if ('$(build)' -eq 'alpine') {

tools/releaseBuild/azureDevOps/templates/linux.yml

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,17 @@ jobs:
9797
parameters:
9898
BuildDropPath: '$(System.ArtifactsDirectory)/pwshMarinerBuildAmd64'
9999
Build_Repository_Uri: $(Github_Build_Repository_Uri)
100-
displayName: Mariner SBOM
100+
displayName: Mariner x64 SBOM
101+
PackageName: PowerShell Linux Framework Dependent
102+
PackageVersion: $(Version)
103+
sourceScanPath: '$(PowerShellRoot)/tools'
104+
105+
- ${{ if eq(variables.build,'rpm') }} :
106+
- template: Sbom.yml@ComplianceRepo
107+
parameters:
108+
BuildDropPath: '$(System.ArtifactsDirectory)/pwshMarinerBuildArm64'
109+
Build_Repository_Uri: $(Github_Build_Repository_Uri)
110+
displayName: Mariner arm64 SBOM
101111
PackageName: PowerShell Linux Framework Dependent
102112
PackageVersion: $(Version)
103113
sourceScanPath: '$(PowerShellRoot)/tools'
@@ -155,6 +165,12 @@ jobs:
155165
tar -czvf $(System.ArtifactsDirectory)/pwshMarinerBuildAmd64.tar.gz *
156166
displayName: Compress pwshMarinerBuildAmd64
157167
168+
- ${{ if eq(variables.build,'rpm') }} :
169+
- pwsh: |
170+
Set-Location '$(System.ArtifactsDirectory)/pwshMarinerBuildArm64'
171+
tar -czvf $(System.ArtifactsDirectory)/pwshMarinerBuildArm64.tar.gz *
172+
displayName: Compress pwshMarinerBuildArm64
173+
158174
- ${{ if eq(variables.build,'deb') }} :
159175
- task: PublishPipelineArtifact@1
160176
inputs:
@@ -215,6 +231,20 @@ jobs:
215231
path: '$(System.ArtifactsDirectory)/pwshMarinerBuildAmd64-meta'
216232
artifactName: pwshMarinerBuildAmd64-meta
217233

234+
- ${{ if eq(variables.build,'rpm') }} :
235+
- task: PublishPipelineArtifact@1
236+
inputs:
237+
path: '$(System.ArtifactsDirectory)/pwshMarinerBuildArm64.tar.gz'
238+
artifactName: pwshMarinerBuildArm64.tar.gz
239+
retryCountOnTaskFailure: 2
240+
241+
- ${{ if eq(variables.build,'rpm') }} :
242+
- task: PublishPipelineArtifact@1
243+
inputs:
244+
path: '$(System.ArtifactsDirectory)/pwshMarinerBuildArm64-meta'
245+
artifactName: pwshMarinerBuildArm64-meta
246+
retryCountOnTaskFailure: 2
247+
218248
- ${{ if eq(variables.build,'alpine') }} :
219249
- task: PublishPipelineArtifact@1
220250
inputs:

tools/releaseBuild/azureDevOps/templates/release-ValidatePackageNames.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ steps:
3131
- pwsh: |
3232
$message = @()
3333
Get-ChildItem $(System.ArtifactsDirectory)\* -recurse -filter *.rpm | ForEach-Object {
34-
if($_.Name -notmatch 'powershell\-(preview-|lts-)?\d+\.\d+\.\d+(_[a-z]*\.\d+)?-1.(rh|cm).x86_64\.rpm')
34+
if($_.Name -notmatch 'powershell\-(preview-|lts-)?\d+\.\d+\.\d+(_[a-z]*\.\d+)?-1.(rh|cm).(x86_64|aarch64)\.rpm')
3535
{
3636
$messageInstance = "$($_.Name) is not a valid package name"
3737
$message += $messageInstance

0 commit comments

Comments
 (0)
0