8000 Add mariner arm64 package build to release build (#19946) · PowerShell/PowerShell@3229c83 · GitHub
[go: up one dir, main page]

Skip to content

Commit 3229c83

Browse files
anamnaviadityapatwardhan
authored andcommitted
Add mariner arm64 package build to release build (#19946)
1 parent 2267c40 commit 3229c83

File tree

6 files changed

+308
-7
lines changed

6 files changed

+308
-7
lines changed

tools/packaging/packaging.psm1

Lines changed: 78 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -533,6 +533,48 @@ function Start-PSPackage {
533533
}
534534
}
535535
}
536+
'rpm-fxdependent-arm64' {
537+
$Arguments = @{
538+
Type = 'rpm'
539+
PackageSourcePath = $Source
540+
Name = $Name
541+
Version = $Version
542+
Force = $Force
543+
NoSudo = $NoSudo
544+
LTS = $LTS
545+
HostArchitecture = "aarch64"
546+
}
547+
foreach ($Distro in $Script:RedhatFddDistributions) {
548+
$Arguments["Distribution"] = $Distro
549+
if ($PSCmdlet.ShouldProcess("Create RPM Package for $Distro")) {
550+
Write-Verbose -Verbose "Creating RPM Package for $Distro"
551+
New-UnixPackage @Arguments
552+
}
553+
}
554+
}
555+
'osxpkg' {
556+
$HostArchitecture = "x86_64"
557+
if ($MacOSRuntime -match "-arm64") {
558+
$HostArchitecture = "arm64"
559+
}
560+
Write-Verbose "HostArchitecture = $HostArchitecture" -Verbose
561+
562+
$Arguments = @{
563+
Type = 'osxpkg'
564+
PackageSourcePath = $Source
565+
Name = $Name
566+
Version = $Version
567+
Force = $Force
568+
NoSudo = $NoSudo
569+
LTS = $LTS
570+
HostArchitecture = $HostArchitecture
571+
}
572+
573+
574+
if ($PSCmdlet.ShouldProcess("Create macOS Package")) {
575+
New-UnixPackage @Arguments
576+
}
577+
}
536578
default {
537579
$Arguments = @{
538580
Type = $_
@@ -3949,6 +3991,7 @@ ${minSizeLinuxBuildFolder} = 'pwshLinuxBuildMinSize'
39493991
${arm32LinuxBuildFolder} = 'pwshLinuxBuildArm32'
39503992
${arm64LinuxBuildFolder} = 'pwshLinuxBuildArm64'
39513993
${amd64MarinerBuildFolder} = 'pwshMarinerBuildAmd64'
3994+
${arm64MarinerBuildFolder} = 'pwshMarinerBuildArm64'
39523995

39533996
<#
39543997
Used in Azure DevOps Yaml to package all the linux packages for a channel.
@@ -4028,6 +4071,8 @@ function Invoke-AzDevOpsLinuxPackageCreation {
40284071
Set-LinuxFilePermission -FilePath $filePermissionFile -RootPath "${env:SYSTEM_ARTIFACTSDIRECTORY}\${arm64LinuxBuildFolder}"
40294072
Start-PSPackage -Type tar-arm64 @releaseTagParam -LTS:$LTS
40304073
} elseif ($BuildType -eq 'rpm') {
4074+
# Generate mariner amd64 package
4075+
Write-Verbose -Verbose "Generating mariner amd64 package"
40314076
Restore-PSOptions -PSOptionsPath "${env:SYSTEM_ARTIFACTSDIRECTORY}\${amd64MarinerBuildFolder}-meta\psoptions.json"
40324077
$filePermissionFile = "${env:SYSTEM_ARTIFACTSDIRECTORY}\${amd64MarinerBuildFolder}-meta\linuxFilePermission.json"
40334078
Set-LinuxFilePermission -FilePath $filePermissionFile -RootPath "${env:SYSTEM_ARTIFACTSDIRECTORY}\${amd64MarinerBuildFolder}"
@@ -4037,6 +4082,18 @@ function Invoke-AzDevOpsLinuxPackageCreation {
40374082
Write-Verbose -Verbose "options.Top $($options.Top)"
40384083

40394084
Start-PSPackage -Type rpm-fxdependent @releaseTagParam -LTS:$LTS
4085+
4086+
# Generate mariner arm64 package
4087+
Write-Verbose -Verbose "Generating mariner arm64 package"
4088+
Restore-PSOptions -PSOptionsPath "${env:SYSTEM_ARTIFACTSDIRECTORY}\${arm64MarinerBuildFolder}-meta\psoptions.json"
4089+
$filePermissionFile = "${env:SYSTEM_ARTIFACTSDIRECTORY}\${arm64MarinerBuildFolder}-meta\linuxFilePermission.json"
4090+
Set-LinuxFilePermission -FilePath $filePermissionFile -RootPath "${env:SYSTEM_ARTIFACTSDIRECTORY}\${arm64MarinerBuildFolder}"
4091+
4092+
Write-Verbose -Verbose "---- rpm-fxdependent-arm64 ----"
4093+
Write-Verbose -Verbose "options.Output: $($options.Output)"
4094+
Write-Verbose -Verbose "options.Top $($options.Top)"
4095+
4096+
Start-PSPackage -Type rpm-fxdependent-arm64 @releaseTagParam -LTS:$LTS
40404097
}
40414098
}
40424099
catch {
@@ -4121,14 +4178,14 @@ function Invoke-AzDevOpsLinuxPackageBuild {
41214178
Remove-Item "${buildFolder}\*.pdb" -Force
41224179
Get-ChildItem -Path $buildFolder -Recurse -File | Export-LinuxFilePermission -FilePath "${buildFolder}-meta/linuxFilePermission.json" -RootPath ${buildFolder} -Force
41234180
} elseif ($BuildType -eq 'rpm') {
4124-
## Build for Mariner
4181+
## Build for Mariner amd64
41254182
$options = Get-PSOptions
4126-
Write-Verbose -Verbose "---- Mariner ----"
4183+
Write-Verbose -Verbose "---- Mariner x64 ----"
41274184
Write-Verbose -Verbose "options.Output: $($options.Output)"
41284185
Write-Verbose -Verbose "options.Top $($options.Top)"
41294186
$binDir = Join-Path -Path $options.Top -ChildPath 'bin'
41304187
if (Test-Path -Path $binDir) {
4131-
Write-Verbose -Verbose "Remove $binDir, to get a clean build for Mariner package"
4188+
Write-Verbose -Verbose "Remove $binDir, to get a clean build for Mariner x64 package"
41324189
Remove-Item -Path $binDir -Recurse -Force
41334190
}
41344191

@@ -4138,6 +4195,24 @@ function Invoke-AzDevOpsLinuxPackageBuild {
41384195
# Remove symbol files, xml document files.
41394196
Remove-Item "${buildFolder}\*.pdb", "${buildFolder}\*.xml" -Force
41404197
Get-ChildItem -Path $buildFolder -Recurse -File | Export-LinuxFilePermission -FilePath "${buildFolder}-meta/linuxFilePermission.json" -RootPath ${buildFolder} -Force
4198+
4199+
## Build for Mariner arm64
4200+
$options = Get-PSOptions
4201+
Write-Verbose -Verbose "---- Mariner arm64 ----"
4202+
Write-Verbose -Verbose "options.Output: $($options.Output)"
4203+
Write-Verbose -Verbose "options.Top $($options.Top)"
4204+
$binDir = Join-Path -Path $options.Top -ChildPath 'bin'
4205+
if (Test-Path -Path $binDir) {
4206+
Write-Verbose -Verbose "Remove $binDir, to get a clean build for Mariner arm64 package"
4207+
Remove-Item -Path $binDir -Recurse -Force
4208+
}
4209+
4210+
$buildParams['Runtime'] = 'fxdependent-linux-arm64'
4211+
$buildFolder = "${env:SYSTEM_ARTIFACTSDIRECTORY}/${arm64MarinerBuildFolder}"
4212+
Start-PSBuild -Clean @buildParams @releaseTagParam -Output $buildFolder -PSOptionsPath "${buildFolder}-meta/psoptions.json"
4213+
# Remove symbol files, xml document files.
4214+
Remove-Item "${buildFolder}\*.pdb", "${buildFolder}\*.xml" -Force
4215+
Get-ChildItem -Path $buildFolder -Recurse -File | Export-LinuxFilePermission -FilePath "${buildFolder}-meta/linuxFilePermission.json" -RootPath ${buildFolder} -Force
41414216
}
41424217
}
41434218
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
Lines changed: 169 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,169 @@
1+
jobs:
2+
- job: sign_linux_builds
3+
displayName: Sign all linux builds
4+
condition: succeeded()
5+
pool:
6+
name: PowerShell1ES
7+
demands:
8+
- ImageOverride -equals PSMMS2019-Secure
9+
dependsOn: ['build_fxdependent', 'build_rpm']
10+
variables:
11+
- name: runCodesignValidationInjection
12+
value: false
13+
- name: NugetSecurityAnalysisWarningLevel
14+
value: none
15+
- group: ESRP
16+
17+
steps:
18+
- checkout: self
19+
clean: true
20+
21+
- task: DownloadPipelineArtifact@2
22+
inputs:
23+
artifact: pwshLinuxBuild.tar.gz
24+
path: $(Build.ArtifactStagingDirectory)/linuxTars
25+
displayName: Download deb build
26+
27+
- task: DownloadPipelineArtifact@2
28+
inputs:
29+
artifact: pwshLinuxBuildMinSize.tar.gz
30+
path: $(Build.ArtifactStagingDirectory)/linuxTars
31+
displayName: Download min-size build
32+
33+
- task: DownloadPipelineArtifact@2
34+
inputs:
35+
artifact: pwshLinuxBuildArm32.tar.gz
36+
path: $(Build.ArtifactStagingDirectory)/linuxTars
37+
displayName: Download arm32 build
38+
39+
- task: DownloadPipelineArtifact@2
40+
inputs:
41+
artifact: pwshLinuxBuildArm64.tar.gz
42+
path: $(Build.ArtifactStagingDirectory)/linuxTars
43+
displayName: Download arm64 build
44+
45+
- task: DownloadPipelineArtifact@2
46+
inputs:
47+
artifact: pwshMarinerBuildAmd64.tar.gz
48+
path: $(Build.ArtifactStagingDirectory)/linuxTars
49+
displayName: Download mariner build
50+
51+
- task: DownloadPipelineArtifact@2
52+
inputs:
53+
artifact: pwshMarinerBuildArm64.tar.gz
54+
path: $(Build.ArtifactStagingDirectory)/linuxTars
55+
displayName: Download mariner arm64 build
56+
57+
- task: DownloadPipelineArtifact@2
58+
inputs:
59+
artifact: pwshLinuxBuildAlpine.tar.gz
60+
path: $(Build.ArtifactStagingDirectory)/linuxTars/pwshLinuxBuildAlpine.tar.gz
61+
displayName: Download alpine build
62+
63+
- task: DownloadPipelineArtifact@2
64+
inputs:
65+
artifact: pwshLinuxBuildFxdependent.tar.gz
66+
path: $(Build.ArtifactStagingDirectory)/linuxTars/pwshLinuxBuildFxdependent.tar.gz
67+
displayName: Download fxdependent build
68+
69+
- pwsh: |
70+
Get-ChildItem -Path $(Build.ArtifactStagingDirectory)/linuxTars
71+
displayName: Capture downloaded tars
72+
73+
- pwsh: |
74+
Write-Verbose -Verbose -Message "Expanding $(Build.ArtifactStagingDirectory)/linuxTars/pwshLinuxBuild.tar.gz to $(Build.ArtifactStagingDirectory)/pwshLinuxBuild"
75+
New-Item -Path $(Build.ArtifactStagingDirectory)/pwshLinuxBuild -ItemType Directory
76+
tar -xf $(Build.ArtifactStagingDirectory)/linuxTars/pwshLinuxBuild.tar.gz -C $(Build.ArtifactStagingDirectory)/pwshLinuxBuild
77+
Write-Verbose -Verbose "File permisions after expanding"
78+
Get-ChildItem -Path $(Build.ArtifactStagingDirectory)/pwshLinuxBuild/pwsh | Select-Object -Property 'unixmode', 'size', 'name'
79+
80+
Write-Verbose -Verbose -Message "Expanding $(Build.ArtifactStagingDirectory)/linuxTars/pwshLinuxBuildMinSize.tar.gz to $(Build.ArtifactStagingDirectory)/pwshLinuxBuildMinSize"
81+
New-Item -Path $(Build.ArtifactStagingDirectory)/pwshLinuxBuildMinSize -ItemType Directory
82+
tar -xf $(Build.ArtifactStagingDirectory)/linuxTars/pwshLinuxBuildMinSize.tar.gz -C $(Build.ArtifactStagingDirectory)/pwshLinuxBuildMinSize
83+
84+
Write-Verbose -Verbose -Message "Expanding $(Build.ArtifactStagingDirectory)/linuxTars/pwshLinuxBuildArm32.tar.gz to $(Build.ArtifactStagingDirectory)/pwshLinuxBuildArm32"
85+
New-Item -Path $(Build.ArtifactStagingDirectory)/pwshLinuxBuildArm32 -ItemType Directory
86+
tar -xf $(Build.ArtifactStagingDirectory)/linuxTars/pwshLinuxBuildArm32.tar.gz -C $(Build.ArtifactStagingDirectory)/pwshLinuxBuildArm32
87+
88+
Write-Verbose -Verbose -Message "Expanding $(Build.ArtifactStagingDirectory)/linuxTars/pwshLinuxBuildArm64.tar.gz to $(Build.ArtifactStagingDirectory)/pwshLinuxBuildArm64"
89+
New-Item -Path $(Build.ArtifactStagingDirectory)/pwshLinuxBuildArm64 -ItemType Directory
90+
tar -xf $(Build.ArtifactStagingDirectory)/linuxTars/pwshLinuxBuildArm64.tar.gz -C $(Build.ArtifactStagingDirectory)/pwshLinuxBuildArm64
91+
92+
Write-Verbose -Verbose -Message "Expanding $(Build.ArtifactStagingDirectory)/linuxTars/pwshMarinerBuildAmd64.tar.gz to $(Build.ArtifactStagingDirectory)/pwshMarinerBuildAmd64"
93+
New-Item -Path $(Build.ArtifactStagingDirectory)/pwshMarinerBuildAmd64 -ItemType Directory
94+
tar -xf $(Build.ArtifactStagingDirectory)/linuxTars/pwshMarinerBuildAmd64.tar.gz -C $(Build.ArtifactStagingDirectory)/pwshMarinerBuildAmd64
95+
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< 10000 /td>+
tar -xf $(Build.ArtifactStagingDirectory)/linuxTars/pwshMarinerBuildArm64.tar.gz -C $(Build.ArtifactStagingDirectory)/pwshMarinerBuildArm64
99+
100+
Write-Verbose -Verbose -Message "Expanding $(Build.ArtifactStagingDirectory)/linuxTars/pwshLinuxBuildAlpine.tar.gz/pwshLinuxBuild.tar.gz to $(Build.ArtifactStagingDirectory)/pwshLinuxBuildAlpine"
101+
New-Item -Path $(Build.ArtifactStagingDirectory)/pwshLinuxBuildAlpine -ItemType Directory
102+
tar -xf $(Build.ArtifactStagingDirectory)/linuxTars/pwshLinuxBuildAlpine.tar.gz/pwshLinuxBuild.tar.gz -C $(Build.ArtifactStagingDirectory)/pwshLinuxBuildAlpine
103+
104+
Write-Verbose -Verbose -Message "Expanding $(Build.ArtifactStagingDirectory)/linuxTars/pwshLinuxBuildFxdependent.tar.gz/pwshLinuxBuild.tar.gz to $(Build.ArtifactStagingDirectory)/pwshLinuxBuildFxdependent"
105+
New-Item -Path $(Build.ArtifactStagingDirectory)/pwshLinuxBuildFxdependent -ItemType Directory
106+
tar -xf $(Build.ArtifactStagingDirectory)/linuxTars/pwshLinuxBuildFxdependent.tar.gz/pwshLinuxBuild.tar.gz -C $(Build.ArtifactStagingDirectory)/pwshLinuxBuildFxdependent
107+
displayName: Expand builds
108+
109+
- template: SetVersionVariables.yml
110+
parameters:
111+
ReleaseTagVar: $(ReleaseTagVar)
112+
113+
- template: cloneToOfficialPath.yml
114+
115+
- template: insert-nuget-config-azfeed.yml
116+
parameters:
117+
repoRoot: $(PowerShellRoot)
118+
119+
- pwsh: |
120+
Set-Location $env:POWERSHELLROOT
121+
import-module "$env:POWERSHELLROOT/build.psm1"
122+
Sync-PSTags -AddRemoteIfMissing
123+
displayName: SyncTags
124+
condition: and(succeeded(), ne(variables['SkipBuild'], 'true'))
125+
126+
- checkout: ComplianceRepo
127+
clean: true
128+
129+
- template: shouldSign.yml
130+
131+
- template: signBuildFiles.yml
132+
parameters:
133+
binLocation: pwshLinuxBuild
134+
buildPrefixName: 'PowerShell Linux'
135+
136+
- template: signBuildFiles.yml
137+
parameters:
138+
binLocation: pwshLinuxBuildMinSize
139+
buildPrefixName: 'PowerShell Linux Minimum Size'
140+
141+
- template: signBuildFiles.yml
142+
parameters:
143+
binLocation: pwshLinuxBuildArm32
144+
buildPrefixName: 'PowerShell Linux Arm32'
145+
146+
- template: signBuildFiles.yml
147+
parameters:
148+
binLocation: pwshLinuxBuildArm64
149+
buildPrefixName: 'PowerShell Linux Arm64'
150+
151+
- template: signBuildFiles.yml
152+
parameters:
153+
binLocation: pwshMarinerBuildAmd64
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'
160+
161+
- template: signBuildFiles.yml
162+
parameters:
163+
binLocation: pwshLinuxBuildAlpine
164+
buildPrefixName: 'PowerShell Linux Alpine x64'
165+
166+
- template: signBuildFiles.yml
167+
parameters:
168+
binLocation: pwshLinuxBuildFxdependent
169+
buildPrefixName: 'PowerShell Linux Framework Dependent'

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

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

6371
- ${{ if eq(variables.build,'alpine') }} :
6472
- task: DownloadPipelineArtifact@2
@@ -109,7 +117,14 @@ jobs:
109117
inputs:
110118
artifact: pwshMarinerBuildAmd64-meta
111119
path: $(Build.ArtifactStagingDirectory)/pwshMarinerBuildAmd64-meta
112-
displayName: Download mariner build meta
120+
displayName: Download mariner x64 build meta
121+
122+
- ${{ if eq(variables.build,'rpm') }} :
123+
- task: DownloadPipelineArtifact@2
124+
inputs:
125+
artifact: pwshMarinerBuildArm64-meta
126+
path: $(Build.ArtifactStagingDirectory)/pwshMarinerBuildArm64-meta
127+
displayName: Download mariner arm64 build meta
113128

114129
- ${{ if eq(variables.build,'alpine') }} :
115130
- task: DownloadPipelineArtifact@2
@@ -151,9 +166,15 @@ jobs:
151166
}
152167
153168
if ('$(build)' -eq 'rpm') {
169+
# for mariner x64
154170
Write-Verbose -Verbose "Expanding $(Build.ArtifactStagingDirectory)/pwshMarinerBuildAmd64-signed/pwshMarinerBuildAmd64.tar.gz to $(Build.ArtifactStagingDirectory)/pwshMarinerBuildAmd64"
155171
New-Item -Path $(Build.ArtifactStagingDirectory)/pwshMarinerBuildAmd64 -ItemType Directory
156172
tar -xf $(Build.ArtifactStagingDirectory)/pwshMarinerBuildAmd64-signed/pwshMarinerBuildAmd64.tar.gz -C $(Build.ArtifactStagingDirectory)/pwshMarinerBuildAmd64
173+
174+
# for mariner arm64
175+
Write-Verbose -Verbose "Expanding $(Build.ArtifactStagingDirectory)/pwshMarinerBuildArm64-signed/pwshMarinerBuildArm64.tar.gz to $(Build.ArtifactStagingDirectory)/pwshMarinerBuildArm64"
176+
New-Item -Path $(Build.ArtifactStagingDirectory)/pwshMarinerBuildArm64 -ItemType Directory
177+
tar -xf $(Build.ArtifactStagingDirectory)/pwshMarinerBuildArm64-signed/pwshMarinerBuildArm64.tar.gz -C $(Build.ArtifactStagingDirectory)/pwshMarinerBuildArm64
157178
}
158179
159180
if ('$(build)' -eq 'alpine') {

0 commit comments

Comments
 (0)
0