From 41ce89d5cb825946d3c0a0e12623dad525be5116 Mon Sep 17 00:00:00 2001 From: Aditya Patwardhan Date: Mon, 14 Nov 2022 17:23:38 -0800 Subject: [PATCH 01/18] Upload linux artifacts as tar.gz to preserve linux file permissions --- .../templates/linux-authenticode-sign.yml | 60 ++++++++++------ .../azureDevOps/templates/linux-packaging.yml | 72 +++++++++++++++---- .../azureDevOps/templates/linux.yml | 48 +++++++++---- .../azureDevOps/templates/signBuildFiles.yml | 9 ++- 4 files changed, 136 insertions(+), 53 deletions(-) diff --git a/tools/releaseBuild/azureDevOps/templates/linux-authenticode-sign.yml b/tools/releaseBuild/azureDevOps/templates/linux-authenticode-sign.yml index 39eeb7dd5fa8..dbab4574c539 100644 --- a/tools/releaseBuild/azureDevOps/templates/linux-authenticode-sign.yml +++ b/tools/releaseBuild/azureDevOps/templates/linux-authenticode-sign.yml @@ -20,46 +20,69 @@ jobs: - task: DownloadPipelineArtifact@2 inputs: - artifact: pwshLinuxBuild - path: $(Build.ArtifactStagingDirectory)/pwshLinuxBuild + artifact: pwshLinuxBuild.tar.gz + path: $(Build.ArtifactStagingDirectory)/pwshLinuxBuild.tar.gz displayName: Download deb build - task: DownloadPipelineArtifact@2 inputs: - artifact: pwshLinuxBuildMinSize - path: $(Build.ArtifactStagingDirectory)/pwshLinuxBuildMinSize + artifact: pwshLinuxBuildMinSize.tar.gz + path: $(Build.ArtifactStagingDirectory)/pwshLinuxBuildMinSize.tar.gz displayName: Download min-size build - task: DownloadPipelineArtifact@2 inputs: - artifact: pwshLinuxBuildArm32 - path: $(Build.ArtifactStagingDirectory)/pwshLinuxBuildArm32 + artifact: pwshLinuxBuildArm32.tar.gz + path: $(Build.ArtifactStagingDirectory)/pwshLinuxBuildArm32.tar.gz displayName: Download arm32 build - task: DownloadPipelineArtifact@2 inputs: - artifact: pwshLinuxBuildArm64 - path: $(Build.ArtifactStagingDirectory)/pwshLinuxBuildArm64 + artifact: pwshLinuxBuildArm64.tar.gz + path: $(Build.ArtifactStagingDirectory)/pwshLinuxBuildArm64.tar.gz displayName: Download arm64 build - task: DownloadPipelineArtifact@2 inputs: - artifact: pwshMarinerBuildAmd64 - path: $(Build.ArtifactStagingDirectory)/pwshMarinerBuildAmd64 + artifact: pwshMarinerBuildAmd64.tar.gz + path: $(Build.ArtifactStagingDirectory)/pwshMarinerBuildAmd64.tar.gz displayName: Download mariner build - task: DownloadPipelineArtifact@2 inputs: - artifact: pwshLinuxBuildAlpine - path: $(Build.ArtifactStagingDirectory)/pwshLinuxBuildAlpine + artifact: pwshLinuxBuildAlpine.tar.gz + path: $(Build.ArtifactStagingDirectory)/pwshLinuxBuildAlpine.tar.gz displayName: Download alpine build - task: DownloadPipelineArtifact@2 inputs: - artifact: pwshLinuxBuildFxdependent - path: $(Build.ArtifactStagingDirectory)/pwshLinuxBuildFxdependent + artifact: pwshLinuxBuildFxdependent.tar.gz + path: $(Build.ArtifactStagingDirectory)/pwshLinuxBuildFxdependent.tar.gz displayName: Download fxdependent build + - pwsh: | + Write-Verbose -Verbose -Message "Expanding $(Build.ArtifactStagingDirectory)/pwshLinuxBuild.tar.gz to $(Build.ArtifactStagingDirectory)/pwshLinuxBuild" + tar -xf $(Build.ArtifactStagingDirectory)/pwshLinuxBuild.tar.gz -C $(Build.ArtifactStagingDirectory)/pwshLinuxBuild + + Write-Verbose -Verbose -Message "Expanding $(Build.ArtifactStagingDirectory)/pwshLinuxBuildMinSize.tar.gz to $(Build.ArtifactStagingDirectory)/pwshLinuxBuildMinSize" + tar -xf $(Build.ArtifactStagingDirectory)/pwshLinuxBuildMinSize.tar.gz -C $(Build.ArtifactStagingDirectory)/pwshLinuxBuildMinSize + + Write-Verbose -Verbose -Message "Expanding $(Build.ArtifactStagingDirectory)/pwshLinuxBuildArm32.tar.gz to $(Build.ArtifactStagingDirectory)/pwshLinuxBuildArm32" + tar -xf $(Build.ArtifactStagingDirectory)/pwshLinuxBuildArm32.tar.gz -C $(Build.ArtifactStagingDirectory)/pwshLinuxBuildArm32 + + Write-Verbose -Verbose -Message "Expanding $(Build.ArtifactStagingDirectory)/pwshLinuxBuildArm64.tar.gz to $(Build.ArtifactStagingDirectory)/pwshLinuxBuildArm64" + tar -xf $(Build.ArtifactStagingDirectory)/pwshLinuxBuildArm64.tar.gz -C $(Build.ArtifactStagingDirectory)/pwshLinuxBuildArm64 + + Write-Verbose -Verbose -Message "Expanding $(Build.ArtifactStagingDirectory)/pwshMarinerBuildAmd64.tar.gz to $(Build.ArtifactStagingDirectory)/pwshMarinerBuildAmd64" + tar -xf $(Build.ArtifactStagingDirectory)/pwshMarinerBuildAmd64.tar.gz -C $(Build.ArtifactStagingDirectory)/pwshMarinerBuildAmd64 + + Write-Verbose -Verbose -Message "Expanding $(Build.ArtifactStagingDirectory)/pwshLinuxBuildAlpine.tar.gz to $(Build.ArtifactStagingDirectory)/pwshLinuxBuildAlpine" + tar -xf $(Build.ArtifactStagingDirectory)/pwshLinuxBuildAlpine.tar.gz -C $(Build.ArtifactStagingDirectory)/pwshLinuxBuildAlpine + + Write-Verbose -Verbose -Message "Expanding $(Build.ArtifactStagingDirectory)/pwshLinuxBuildFxdependent.tar.gz to $(Build.ArtifactStagingDirectory)/pwshLinuxBuildFxdependent" + tar -xf $(Build.ArtifactStagingDirectory)/pwshLinuxBuildFxdependent.tar.gz -C $(Build.ArtifactStagingDirectory)/pwshLinuxBuildFxdependent + displayName: Expand builds + - template: SetVersionVariables.yml parameters: ReleaseTagVar: $(ReleaseTagVar) @@ -116,12 +139,3 @@ jobs: parameters: binLocation: pwshLinuxBuildFxdependent buildPrefixName: 'PowerShell Linux Framework Dependent' - - #- template: Sbom.yml@ComplianceRepo - # parameters: - # BuildDropPath: '$(System.ArtifactsDirectory)/$(BIN_LOCATION)' - # Build_Repository_Uri: $(Github_Build_Repository_Uri) - # displayName: ${{ parameters.buildName }} SBOM - # PackageName: $(PACKAGE_NAME) - # PackageVersion: $(Version) - # sourceScanPath: '$(PowerShellRoot)/tools' diff --git a/tools/releaseBuild/azureDevOps/templates/linux-packaging.yml b/tools/releaseBuild/azureDevOps/templates/linux-packaging.yml index f75ca3971a84..f54fa51f28bf 100644 --- a/tools/releaseBuild/azureDevOps/templates/linux-packaging.yml +++ b/tools/releaseBuild/azureDevOps/templates/linux-packaging.yml @@ -26,50 +26,57 @@ jobs: - ${{ if or(eq(variables.build,'deb'), eq(variables.build,'rpm')) }} : - task: DownloadPipelineArtifact@2 inputs: - artifact: pwshLinuxBuild-signed - path: $(Build.ArtifactStagingDirectory)/pwshLinuxBuild + artifact: authenticode-signed + path: $(Build.ArtifactStagingDirectory)/pwshLinuxBuild-signed + pattern: '**/pwshLinuxBuild.tar.gz' displayName: Download deb build - ${{ if eq(variables.build,'deb') }} : - task: DownloadPipelineArtifact@2 inputs: - artifact: pwshLinuxBuildMinSize-signed - path: $(Build.ArtifactStagingDirectory)/pwshLinuxBuildMinSize + artifact: authenticode-signed + path: $(Build.ArtifactStagingDirectory)/pwshLinuxBuildMinSize-signed + pattern: '**/pwshLinuxBuildMinSize.tar.gz' displayName: Download min-size build - ${{ if eq(variables.build,'deb') }} : - task: DownloadPipelineArtifact@2 inputs: - artifact: pwshLinuxBuildArm32-signed - path: $(Build.ArtifactStagingDirectory)/pwshLinuxBuildArm32 + artifact: authenticode-signed + path: $(Build.ArtifactStagingDirectory)/pwshLinuxBuildArm32-signed + pattern: '**/pwshLinuxBuildArm32.tar.gz' displayName: Download arm32 build - ${{ if eq(variables.build,'deb') }} : - task: DownloadPipelineArtifact@2 inputs: - artifact: pwshLinuxBuildArm64-signed - path: $(Build.ArtifactStagingDirectory)/pwshLinuxBuildArm64 + artifact: authenticode-signed + path: $(Build.ArtifactStagingDirectory)/pwshLinuxBuildArm64-signed + pattern: '**/pwshLinuxBuildArm64.tar.gz' displayName: Download arm64 build - ${{ if eq(variables.build,'rpm') }} : - task: DownloadPipelineArtifact@2 inputs: - artifact: pwshMarinerBuildAmd64-signed - path: $(Build.ArtifactStagingDirectory)/pwshMarinerBuildAmd64 + artifact: authenticode-signed + path: $(Build.ArtifactStagingDirectory)/pwshMarinerBuildAmd64-signed + pattern: '**/pwshMarinerBuildAmd64.tar.gz' displayName: Download mariner build - ${{ if eq(variables.build,'alpine') }} : - task: DownloadPipelineArtifact@2 inputs: - artifact: pwshLinuxBuildAlpine-signed - path: $(Build.ArtifactStagingDirectory)/pwshLinuxBuild + artifact: authenticode-signed + path: $(Build.ArtifactStagingDirectory)/pwshLinuxBuildAlpine-signed + pattern: '**/pwshLinuxBuildAlpine.tar.gz' displayName: Download alpine build - ${{ if eq(variables.build,'fxdependent') }} : - task: DownloadPipelineArtifact@2 inputs: - artifact: pwshLinuxBuildFxdependent-signed - path: $(Build.ArtifactStagingDirectory)/pwshLinuxBuild + artifact: authenticode-signed + path: $(Build.ArtifactStagingDirectory)/pwshLinuxBuildFxdependent-signed + pattern: '**/pwshLinuxBuildFxdependent.tar.gz' displayName: Download fxdependent build - ${{ if or(eq(variables.build,'deb'), eq(variables.build,'rpm')) }} : @@ -125,6 +132,43 @@ jobs: Get-ChildItem '$(Build.ArtifactStagingDirectory)' | Select-Object -Property 'unixmode', 'size', 'name' displayName: Capture downloads + - pwsh: | + if ('$(build)' -eq 'deb' -or '$(build)' -eq 'deb') { + Write-Verbose -Verbose "Expanding $(Build.ArtifactStagingDirectory)/pwshLinuxBuild-signed/pwshLinuxBuild.tar.gz to $(Build.ArtifactStagingDirectory)/pwshLinuxBuild" + tar -xf $(Build.ArtifactStagingDirectory)/pwshLinuxBuild-signed/pwshLinuxBuild.tar.gz -C $(Build.ArtifactStagingDirectory)/pwshLinuxBuild + } + + if ('$(build)' -eq 'deb') { + Write-Verbose -Verbose "Expanding $(Build.ArtifactStagingDirectory)/pwshLinuxBuildMinSize-signed/pwshLinuxBuildMinSize.tar.gz to $(Build.ArtifactStagingDirectory)/pwshLinuxBuildMinSize" + tar -xf $(Build.ArtifactStagingDirectory)/pwshLinuxBuildMinSize-signed/pwshLinuxBuildMinSize.tar.gz -C $(Build.ArtifactStagingDirectory)/pwshLinuxBuildMinSize + + Write-Verbose -Verbose "Expanding $(Build.ArtifactStagingDirectory)/pwshLinuxBuildArm32-signed/pwshLinuxBuildArm32.tar.gz to $(Build.ArtifactStagingDirectory)/pwshLinuxBuildArm32" + tar -xf $(Build.ArtifactStagingDirectory)/pwshLinuxBuildArm32-signed/pwshLinuxBuildArm32.tar.gz -C $(Build.ArtifactStagingDirectory)/pwshLinuxBuildArm32 + + Write-Verbose -Verbose "Expanding $(Build.ArtifactStagingDirectory)/pwshLinuxBuildArm64-signed/pwshLinuxBuildArm64.tar.gz to $(Build.ArtifactStagingDirectory)/pwshLinuxBuildArm64" + tar -xf $(Build.ArtifactStagingDirectory)/pwshLinuxBuildArm64-signed/pwshLinuxBuildArm64.tar.gz -C $(Build.ArtifactStagingDirectory)/pwshLinuxBuildArm64 + } + + if ('$(build)' -eq 'rpm') { + Write-Verbose -Verbose "Expanding $(Build.ArtifactStagingDirectory)/pwshMarinerBuildAmd64-signed/pwshMarinerBuildAmd64.tar.gz to $(Build.ArtifactStagingDirectory)/pwshMarinerBuildAmd64" + tar -xf $(Build.ArtifactStagingDirectory)/pwshMarinerBuildAmd64-signed/pwshMarinerBuildAmd64.tar.gz -C $(Build.ArtifactStagingDirectory)/pwshMarinerBuildAmd64 + } + + if ('$(build)' -eq 'alpine') { + Write-Verbose -Verbose "Expanding $(Build.ArtifactStagingDirectory)/pwshLinuxBuildAlpine-signed/pwshLinuxBuildAlpine.tar.gz to $(Build.ArtifactStagingDirectory)/pwshLinuxBuild" + tar -xf $(Build.ArtifactStagingDirectory)/pwshLinuxBuildAlpine-signed/pwshLinuxBuildAlpine.tar.gz -C $(Build.ArtifactStagingDirectory)/pwshLinuxBuild + } + + if ('$(build)' -eq 'fxdependent') { + Write-Verbose -Verbose "Expanding $(Build.ArtifactStagingDirectory)/pwshLinuxBuildFxdependent-signed/pwshLinuxBuildFxdependent.tar.gz to $(Build.ArtifactStagingDirectory)/pwshLinuxBuild" + tar -xf $(Build.ArtifactStagingDirectory)/pwshLinuxBuildFxdependent-signed/pwshLinuxBuildFxdependent.tar.gz -C $(Build.ArtifactStagingDirectory)/pwshLinuxBuild + } + displayName: Expand all signed tar.gz + + - pwsh: | + Get-ChildItem '$(Build.ArtifactStagingDirectory)' | Select-Object -Property 'unixmode', 'size', 'name' + displayName: Capture expanded + - checkout: self clean: true diff --git a/tools/releaseBuild/azureDevOps/templates/linux.yml b/tools/releaseBuild/azureDevOps/templates/linux.yml index ab551a16dd05..678e9302fadf 100644 --- a/tools/releaseBuild/azureDevOps/templates/linux.yml +++ b/tools/releaseBuild/azureDevOps/templates/linux.yml @@ -88,6 +88,10 @@ jobs: PackageVersion: $(Version) sourceScanPath: '$(PowerShellRoot)/tools' + - pwsh: | + tar -czvf $(System.ArtifactsDirectory)/pwshLinuxBuild.tar.gz '$(System.ArtifactsDirectory)/pwshLinuxBuild' + displayName: Compress pwshLinuxBuild + - ${{ if eq(variables.build,'rpm') }} : - template: Sbom.yml@ComplianceRepo parameters: @@ -98,6 +102,10 @@ jobs: PackageVersion: $(Version) sourceScanPath: '$(PowerShellRoot)/tools' + - pwsh: | + tar -czvf $(System.ArtifactsDirectory)/pwshMarinerBuildAmd64.tar.gz '$(System.ArtifactsDirectory)/pwshMarinerBuildAmd64' + displayName: Compress pwshMarinerBuildAmd64 + - ${{ if eq(variables.build,'deb') }} : - template: Sbom.yml@ComplianceRepo parameters: @@ -108,6 +116,10 @@ jobs: PackageVersion: $(Version) sourceScanPath: '$(PowerShellRoot)/tools' + - pwsh: | + tar -czvf $(System.ArtifactsDirectory)/pwshLinuxBuildMinSize.tar.gz '$(System.ArtifactsDirectory)/pwshLinuxBuildMinSize' + displayName: Compress pwshLinuxBuildMinSize + - ${{ if eq(variables.build,'deb') }} : - template: Sbom.yml@ComplianceRepo parameters: @@ -118,6 +130,10 @@ jobs: PackageVersion: $(Version) sourceScanPath: '$(PowerShellRoot)/tools' + - pwsh: | + tar -czvf $(System.ArtifactsDirectory)/pwshLinuxBuildArm32.tar.gz '$(System.ArtifactsDirectory)/pwshLinuxBuildArm32' + displayName: Compress pwshLinuxBuildArm32 + - ${{ if eq(variables.build,'deb') }} : - template: Sbom.yml@ComplianceRepo parameters: @@ -128,11 +144,15 @@ jobs: PackageVersion: $(Version) sourceScanPath: '$(PowerShellRoot)/tools' + - pwsh: | + tar -czvf $(System.ArtifactsDirectory)/pwshLinuxBuildArm64.tar.gz '$(System.ArtifactsDirectory)/pwshLinuxBuildArm64' + displayName: Compress pwshLinuxBuildArm64 + - ${{ if eq(variables.build,'deb') }} : - task: PublishPipelineArtifact@1 inputs: - path: '$(System.ArtifactsDirectory)/pwshLinuxBuild' - artifactName: pwshLinuxBuild + path: '$(System.ArtifactsDirectory)/pwshLinuxBuild.tar.gz' + artifactName: pwshLinuxBuild.tar.gz - ${{ if eq(variables.build,'deb') }} : - task: PublishPipelineArtifact@1 @@ -143,8 +163,8 @@ jobs: - ${{ if eq(variables.build,'deb') }} : - task: PublishPipelineArtifact@1 inputs: - path: '$(System.ArtifactsDirectory)/pwshLinuxBuildMinSize' - artifactName: pwshLinuxBuildMinSize + path: '$(System.ArtifactsDirectory)/pwshLinuxBuildMinSize.tar.gz' + artifactName: pwshLinuxBuildMinSize.tar.gz - ${{ if eq(variables.build,'deb') }} : - task: PublishPipelineArtifact@1 @@ -155,8 +175,8 @@ jobs: - ${{ if eq(variables.build,'deb') }} : - task: PublishPipelineArtifact@1 inputs: - path: '$(System.ArtifactsDirectory)/pwshLinuxBuildArm32' - artifactName: pwshLinuxBuildArm32 + path: '$(System.ArtifactsDirectory)/pwshLinuxBuildArm32.tar.gz' + artifactName: pwshLinuxBuildArm32.tar.gz - ${{ if eq(variables.build,'deb') }} : - task: PublishPipelineArtifact@1 @@ -167,8 +187,8 @@ jobs: - ${{ if eq(variables.build,'deb') }} : - task: PublishPipelineArtifact@1 inputs: - path: '$(System.ArtifactsDirectory)/pwshLinuxBuildArm64' - artifactName: pwshLinuxBuildArm64 + path: '$(System.ArtifactsDirectory)/pwshLinuxBuildArm64.tar.gz' + artifactName: pwshLinuxBuildArm64.tar.gz - ${{ if eq(variables.build,'deb') }} : - task: PublishPipelineArtifact@1 @@ -179,8 +199,8 @@ jobs: - ${{ if eq(variables.build,'rpm') }} : - task: PublishPipelineArtifact@1 inputs: - path: '$(System.ArtifactsDirectory)/pwshMarinerBuildAmd64' - artifactName: pwshMarinerBuildAmd64 + path: '$(System.ArtifactsDirectory)/pwshMarinerBuildAmd64.tar.gz' + artifactName: pwshMarinerBuildAmd64.tar.gz - ${{ if eq(variables.build,'rpm') }} : - task: PublishPipelineArtifact@1 @@ -191,8 +211,8 @@ jobs: - ${{ if eq(variables.build,'alpine') }} : - task: PublishPipelineArtifact@1 inputs: - path: '$(System.ArtifactsDirectory)/pwshLinuxBuild' - artifactName: pwshLinuxBuildAlpine + path: '$(System.ArtifactsDirectory)/pwshLinuxBuild.tar.gz' + artifactName: pwshLinuxBuildAlpine.tar.gz - ${{ if eq(variables.build,'alpine') }} : - task: PublishPipelineArtifact@1 @@ -203,8 +223,8 @@ jobs: - ${{ if eq(variables.build,'fxdependent') }} : - task: PublishPipelineArtifact@1 inputs: - path: '$(System.ArtifactsDirectory)/pwshLinuxBuild' - artifactName: pwshLinuxBuildFxdependent + path: '$(System.ArtifactsDirectory)/pwshLinuxBuild.tar.gz' + artifactName: pwshLinuxBuildFxdependent.tar.gz - ${{ if eq(variables.build,'fxdependent') }} : - task: PublishPipelineArtifact@1 diff --git a/tools/releaseBuild/azureDevOps/templates/signBuildFiles.yml b/tools/releaseBuild/azureDevOps/templates/signBuildFiles.yml index 8e4d86e3b516..6df7c9cc10c1 100644 --- a/tools/releaseBuild/azureDevOps/templates/signBuildFiles.yml +++ b/tools/releaseBuild/azureDevOps/templates/signBuildFiles.yml @@ -174,6 +174,11 @@ steps: - pwsh: | $uploadFolder = '$(System.ArtifactsDirectory)/${{ parameters.binLocation }}' - $containerName = '${{ parameters.binLocation }}-signed' - Write-Host "##vso[artifact.upload containerfolder=$containerName;artifactname=$containerName]$uploadFolder" + $containerName = 'authenticode-signed' + + $uploadTarFilePath = '$(System.ArtifactsDirectory)/${{ parameters.binLocation }}.tar.gz' + Write-Verbose -Verbose -Message "Creating tar.gz - $uploadTarFilePath" + tar -czvf $uploadTarFilePath $uploadFolder + + Write-Host "##vso[artifact.upload containerfolder=$containerName;artifactname=$containerName]$uploadTarFilePath" displayName: ${{ parameters.buildPrefixName }} - Upload signed files to artifacts From 16bb810d3856928e01bf84e8ba625e1b96cdeed5 Mon Sep 17 00:00:00 2001 From: Aditya Patwardhan Date: Mon, 14 Nov 2022 18:49:12 -0800 Subject: [PATCH 02/18] Fix conditions --- .../azureDevOps/templates/linux.yml | 30 ++++++++----------- 1 file changed, 13 insertions(+), 17 deletions(-) diff --git a/tools/releaseBuild/azureDevOps/templates/linux.yml b/tools/releaseBuild/azureDevOps/templates/linux.yml index 678e9302fadf..9004e76642ca 100644 --- a/tools/releaseBuild/azureDevOps/templates/linux.yml +++ b/tools/releaseBuild/azureDevOps/templates/linux.yml @@ -88,10 +88,6 @@ jobs: PackageVersion: $(Version) sourceScanPath: '$(PowerShellRoot)/tools' - - pwsh: | - tar -czvf $(System.ArtifactsDirectory)/pwshLinuxBuild.tar.gz '$(System.ArtifactsDirectory)/pwshLinuxBuild' - displayName: Compress pwshLinuxBuild - - ${{ if eq(variables.build,'rpm') }} : - template: Sbom.yml@ComplianceRepo parameters: @@ -102,10 +98,6 @@ jobs: PackageVersion: $(Version) sourceScanPath: '$(PowerShellRoot)/tools' - - pwsh: | - tar -czvf $(System.ArtifactsDirectory)/pwshMarinerBuildAmd64.tar.gz '$(System.ArtifactsDirectory)/pwshMarinerBuildAmd64' - displayName: Compress pwshMarinerBuildAmd64 - - ${{ if eq(variables.build,'deb') }} : - template: Sbom.yml@ComplianceRepo parameters: @@ -116,10 +108,6 @@ jobs: PackageVersion: $(Version) sourceScanPath: '$(PowerShellRoot)/tools' - - pwsh: | - tar -czvf $(System.ArtifactsDirectory)/pwshLinuxBuildMinSize.tar.gz '$(System.ArtifactsDirectory)/pwshLinuxBuildMinSize' - displayName: Compress pwshLinuxBuildMinSize - - ${{ if eq(variables.build,'deb') }} : - template: Sbom.yml@ComplianceRepo parameters: @@ -130,10 +118,6 @@ jobs: PackageVersion: $(Version) sourceScanPath: '$(PowerShellRoot)/tools' - - pwsh: | - tar -czvf $(System.ArtifactsDirectory)/pwshLinuxBuildArm32.tar.gz '$(System.ArtifactsDirectory)/pwshLinuxBuildArm32' - displayName: Compress pwshLinuxBuildArm32 - - ${{ if eq(variables.build,'deb') }} : - template: Sbom.yml@ComplianceRepo parameters: @@ -145,8 +129,20 @@ jobs: sourceScanPath: '$(PowerShellRoot)/tools' - pwsh: | + tar -czvf $(System.ArtifactsDirectory)/pwshLinuxBuild.tar.gz '$(System.ArtifactsDirectory)/pwshLinuxBuild' + displayName: Compress pwshLinuxBuild + + - ${{ if eq(variables.build,'deb') }} : + - pwsh: | + tar -czvf $(System.ArtifactsDirectory)/pwshLinuxBuildMinSize.tar.gz '$(System.ArtifactsDirectory)/pwshLinuxBuildMinSize' + tar -czvf $(System.ArtifactsDirectory)/pwshLinuxBuildArm32.tar.gz '$(System.ArtifactsDirectory)/pwshLinuxBuildArm32' tar -czvf $(System.ArtifactsDirectory)/pwshLinuxBuildArm64.tar.gz '$(System.ArtifactsDirectory)/pwshLinuxBuildArm64' - displayName: Compress pwshLinuxBuildArm64 + displayName: Compress deb + + - ${{ if eq(variables.build,'rpm') }} : + - pwsh: | + tar -czvf $(System.ArtifactsDirectory)/pwshMarinerBuildAmd64.tar.gz '$(System.ArtifactsDirectory)/pwshMarinerBuildAmd64' + displayName: Compress pwshMarinerBuildAmd64 - ${{ if eq(variables.build,'deb') }} : - task: PublishPipelineArtifact@1 From 6e054cbaa5f1669c5354608fd34c4ae9e16cf8ec Mon Sep 17 00:00:00 2001 From: Aditya Patwardhan Date: Mon, 14 Nov 2022 18:50:16 -0800 Subject: [PATCH 03/18] Fix yaml --- tools/releaseBuild/azureDevOps/templates/linux.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tools/releaseBuild/azureDevOps/templates/linux.yml b/tools/releaseBuild/azureDevOps/templates/linux.yml index 9004e76642ca..52ca7a7674b0 100644 --- a/tools/releaseBuild/azureDevOps/templates/linux.yml +++ b/tools/releaseBuild/azureDevOps/templates/linux.yml @@ -134,10 +134,10 @@ jobs: - ${{ if eq(variables.build,'deb') }} : - pwsh: | - tar -czvf $(System.ArtifactsDirectory)/pwshLinuxBuildMinSize.tar.gz '$(System.ArtifactsDirectory)/pwshLinuxBuildMinSize' - tar -czvf $(System.ArtifactsDirectory)/pwshLinuxBuildArm32.tar.gz '$(System.ArtifactsDirectory)/pwshLinuxBuildArm32' - tar -czvf $(System.ArtifactsDirectory)/pwshLinuxBuildArm64.tar.gz '$(System.ArtifactsDirectory)/pwshLinuxBuildArm64' - displayName: Compress deb + tar -czvf $(System.ArtifactsDirectory)/pwshLinuxBuildMinSize.tar.gz '$(System.ArtifactsDirectory)/pwshLinuxBuildMinSize' + tar -czvf $(System.ArtifactsDirectory)/pwshLinuxBuildArm32.tar.gz '$(System.ArtifactsDirectory)/pwshLinuxBuildArm32' + tar -czvf $(System.ArtifactsDirectory)/pwshLinuxBuildArm64.tar.gz '$(System.ArtifactsDirectory)/pwshLinuxBuildArm64' + displayName: Compress deb - ${{ if eq(variables.build,'rpm') }} : - pwsh: | From 6c20dd62d97d33d0fec324362de1832885c66399 Mon Sep 17 00:00:00 2001 From: Aditya Patwardhan Date: Mon, 14 Nov 2022 22:12:14 -0800 Subject: [PATCH 04/18] Fix paths for downloaded artifacts --- .../templates/linux-authenticode-sign.yml | 53 +++++++++++-------- 1 file changed, 32 insertions(+), 21 deletions(-) diff --git a/tools/releaseBuild/azureDevOps/templates/linux-authenticode-sign.yml b/tools/releaseBuild/azureDevOps/templates/linux-authenticode-sign.yml index dbab4574c539..7cff2e83ee78 100644 --- a/tools/releaseBuild/azureDevOps/templates/linux-authenticode-sign.yml +++ b/tools/releaseBuild/azureDevOps/templates/linux-authenticode-sign.yml @@ -21,66 +21,77 @@ jobs: - task: DownloadPipelineArtifact@2 inputs: artifact: pwshLinuxBuild.tar.gz - path: $(Build.ArtifactStagingDirectory)/pwshLinuxBuild.tar.gz + path: $(Build.ArtifactStagingDirectory)/linuxTars displayName: Download deb build - task: DownloadPipelineArtifact@2 inputs: artifact: pwshLinuxBuildMinSize.tar.gz - path: $(Build.ArtifactStagingDirectory)/pwshLinuxBuildMinSize.tar.gz + path: $(Build.ArtifactStagingDirectory)/linuxTars displayName: Download min-size build - task: DownloadPipelineArtifact@2 inputs: artifact: pwshLinuxBuildArm32.tar.gz - path: $(Build.ArtifactStagingDirectory)/pwshLinuxBuildArm32.tar.gz + path: $(Build.ArtifactStagingDirectory)/linuxTars displayName: Download arm32 build - task: DownloadPipelineArtifact@2 inputs: artifact: pwshLinuxBuildArm64.tar.gz - path: $(Build.ArtifactStagingDirectory)/pwshLinuxBuildArm64.tar.gz + path: $(Build.ArtifactStagingDirectory)/linuxTars displayName: Download arm64 build - task: DownloadPipelineArtifact@2 inputs: artifact: pwshMarinerBuildAmd64.tar.gz - path: $(Build.ArtifactStagingDirectory)/pwshMarinerBuildAmd64.tar.gz + path: $(Build.ArtifactStagingDirectory)/linuxTars displayName: Download mariner build - task: DownloadPipelineArtifact@2 inputs: artifact: pwshLinuxBuildAlpine.tar.gz - path: $(Build.ArtifactStagingDirectory)/pwshLinuxBuildAlpine.tar.gz + path: $(Build.ArtifactStagingDirectory)/linuxTars displayName: Download alpine build - task: DownloadPipelineArtifact@2 inputs: artifact: pwshLinuxBuildFxdependent.tar.gz - path: $(Build.ArtifactStagingDirectory)/pwshLinuxBuildFxdependent.tar.gz + path: $(Build.ArtifactStagingDirectory)/linuxTars displayName: Download fxdependent build - pwsh: | - Write-Verbose -Verbose -Message "Expanding $(Build.ArtifactStagingDirectory)/pwshLinuxBuild.tar.gz to $(Build.ArtifactStagingDirectory)/pwshLinuxBuild" - tar -xf $(Build.ArtifactStagingDirectory)/pwshLinuxBuild.tar.gz -C $(Build.ArtifactStagingDirectory)/pwshLinuxBuild + Get-ChildItem -Path $(Build.ArtifactStagingDirectory)/linuxTars + displayName: Capture downloaded tars - Write-Verbose -Verbose -Message "Expanding $(Build.ArtifactStagingDirectory)/pwshLinuxBuildMinSize.tar.gz to $(Build.ArtifactStagingDirectory)/pwshLinuxBuildMinSize" - tar -xf $(Build.ArtifactStagingDirectory)/pwshLinuxBuildMinSize.tar.gz -C $(Build.ArtifactStagingDirectory)/pwshLinuxBuildMinSize + - pwsh: | + Write-Verbose -Verbose -Message "Expanding $(Build.ArtifactStagingDirectory)/linuxTars/pwshLinuxBuild.tar.gz to $(Build.ArtifactStagingDirectory)/pwshLinuxBuild" + New-Item -Path $(Build.ArtifactStagingDirectory)/pwshLinuxBuild -ItemType Directory + tar -xf $(Build.ArtifactStagingDirectory)/linuxTars/pwshLinuxBuild.tar.gz -C $(Build.ArtifactStagingDirectory)/pwshLinuxBuild + + Write-Verbose -Verbose -Message "Expanding $(Build.ArtifactStagingDirectory)/linuxTars/pwshLinuxBuildMinSize.tar.gz to $(Build.ArtifactStagingDirectory)/pwshLinuxBuildMinSize" + New-Item -Path $(Build.ArtifactStagingDirectory)/pwshLinuxBuildMinSize -ItemType Directory + tar -xf $(Build.ArtifactStagingDirectory)/linuxTars/pwshLinuxBuildMinSize.tar.gz -C $(Build.ArtifactStagingDirectory)/pwshLinuxBuildMinSize - Write-Verbose -Verbose -Message "Expanding $(Build.ArtifactStagingDirectory)/pwshLinuxBuildArm32.tar.gz to $(Build.ArtifactStagingDirectory)/pwshLinuxBuildArm32" - tar -xf $(Build.ArtifactStagingDirectory)/pwshLinuxBuildArm32.tar.gz -C $(Build.ArtifactStagingDirectory)/pwshLinuxBuildArm32 + Write-Verbose -Verbose -Message "Expanding $(Build.ArtifactStagingDirectory)/linuxTars/pwshLinuxBuildArm32.tar.gz to $(Build.ArtifactStagingDirectory)/pwshLinuxBuildArm32" + New-Item -Path $(Build.ArtifactStagingDirectory)/pwshLinuxBuildArm32 -ItemType Directory + tar -xf $(Build.ArtifactStagingDirectory)/linuxTars/pwshLinuxBuildArm32.tar.gz -C $(Build.ArtifactStagingDirectory)/pwshLinuxBuildArm32 - Write-Verbose -Verbose -Message "Expanding $(Build.ArtifactStagingDirectory)/pwshLinuxBuildArm64.tar.gz to $(Build.ArtifactStagingDirectory)/pwshLinuxBuildArm64" - tar -xf $(Build.ArtifactStagingDirectory)/pwshLinuxBuildArm64.tar.gz -C $(Build.ArtifactStagingDirectory)/pwshLinuxBuildArm64 + Write-Verbose -Verbose -Message "Expanding $(Build.ArtifactStagingDirectory)/linuxTars/pwshLinuxBuildArm64.tar.gz to $(Build.ArtifactStagingDirectory)/pwshLinuxBuildArm64" + New-Item -Path $(Build.ArtifactStagingDirectory)/pwshLinuxBuildArm64 -ItemType Directory + tar -xf $(Build.ArtifactStagingDirectory)/linuxTars/pwshLinuxBuildArm64.tar.gz -C $(Build.ArtifactStagingDirectory)/pwshLinuxBuildArm64 - Write-Verbose -Verbose -Message "Expanding $(Build.ArtifactStagingDirectory)/pwshMarinerBuildAmd64.tar.gz to $(Build.ArtifactStagingDirectory)/pwshMarinerBuildAmd64" - tar -xf $(Build.ArtifactStagingDirectory)/pwshMarinerBuildAmd64.tar.gz -C $(Build.ArtifactStagingDirectory)/pwshMarinerBuildAmd64 + Write-Verbose -Verbose -Message "Expanding $(Build.ArtifactStagingDirectory)/linuxTars/pwshMarinerBuildAmd64.tar.gz to $(Build.ArtifactStagingDirectory)/pwshMarinerBuildAmd64" + 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)/pwshLinuxBuildAlpine.tar.gz to $(Build.ArtifactStagingDirectory)/pwshLinuxBuildAlpine" - tar -xf $(Build.ArtifactStagingDirectory)/pwshLinuxBuildAlpine.tar.gz -C $(Build.ArtifactStagingDirectory)/pwshLinuxBuildAlpine + Write-Verbose -Verbose -Message "Expanding $(Build.ArtifactStagingDirectory)/linuxTars/pwshLinuxBuildAlpine.tar.gz to $(Build.ArtifactStagingDirectory)/pwshLinuxBuildAlpine" + New-Item -Path $(Build.ArtifactStagingDirectory)/pwshLinuxBuildAlpine -ItemType Directory + tar -xf $(Build.ArtifactStagingDirectory)/linuxTars/pwshLinuxBuildAlpine.tar.gz -C $(Build.ArtifactStagingDirectory)/pwshLinuxBuildAlpine - Write-Verbose -Verbose -Message "Expanding $(Build.ArtifactStagingDirectory)/pwshLinuxBuildFxdependent.tar.gz to $(Build.ArtifactStagingDirectory)/pwshLinuxBuildFxdependent" - tar -xf $(Build.ArtifactStagingDirectory)/pwshLinuxBuildFxdependent.tar.gz -C $(Build.ArtifactStagingDirectory)/pwshLinuxBuildFxdependent + Write-Verbose -Verbose -Message "Expanding $(Build.ArtifactStagingDirectory)/linuxTars/pwshLinuxBuildFxdependent.tar.gz to $(Build.ArtifactStagingDirectory)/pwshLinuxBuildFxdependent" + New-Item -Path $(Build.ArtifactStagingDirectory)/pwshLinuxBuildFxdependent -ItemType Directory + tar -xf $(Build.ArtifactStagingDirectory)/linuxTars/pwshLinuxBuildFxdependent.tar.gz -C $(Build.ArtifactStagingDirectory)/pwshLinuxBuildFxdependent displayName: Expand builds - template: SetVersionVariables.yml From 98a52f988c51f745d6e31f81e11377d33c39dae8 Mon Sep 17 00:00:00 2001 From: Aditya Patwardhan Date: Tue, 15 Nov 2022 00:03:05 -0800 Subject: [PATCH 05/18] Rename while downloading --- .../azureDevOps/templates/linux-authenticode-sign.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/releaseBuild/azureDevOps/templates/linux-authenticode-sign.yml b/tools/releaseBuild/azureDevOps/templates/linux-authenticode-sign.yml index 7cff2e83ee78..c61897913a64 100644 --- a/tools/releaseBuild/azureDevOps/templates/linux-authenticode-sign.yml +++ b/tools/releaseBuild/azureDevOps/templates/linux-authenticode-sign.yml @@ -51,13 +51,13 @@ jobs: - task: DownloadPipelineArtifact@2 inputs: artifact: pwshLinuxBuildAlpine.tar.gz - path: $(Build.ArtifactStagingDirectory)/linuxTars + path: $(Build.ArtifactStagingDirectory)/linuxTars/pwshLinuxBuildAlpine.tar.gz displayName: Download alpine build - task: DownloadPipelineArtifact@2 inputs: artifact: pwshLinuxBuildFxdependent.tar.gz - path: $(Build.ArtifactStagingDirectory)/linuxTars + path: $(Build.ArtifactStagingDirectory)/linuxTars/pwshLinuxBuildFxdependent.tar.gz displayName: Download fxdependent build - pwsh: | From 675d7e81e70de819ce8ddfb71a7b215d30e135ff Mon Sep 17 00:00:00 2001 From: Aditya Patwardhan Date: Tue, 15 Nov 2022 10:58:35 -0800 Subject: [PATCH 06/18] Fix file names and paths --- .../azureDevOps/templates/linux-authenticode-sign.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tools/releaseBuild/azureDevOps/templates/linux-authenticode-sign.yml b/tools/releaseBuild/azureDevOps/templates/linux-authenticode-sign.yml index c61897913a64..202b4da41a7f 100644 --- a/tools/releaseBuild/azureDevOps/templates/linux-authenticode-sign.yml +++ b/tools/releaseBuild/azureDevOps/templates/linux-authenticode-sign.yml @@ -85,13 +85,13 @@ 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/pwshLinuxBuildAlpine.tar.gz to $(Build.ArtifactStagingDirectory)/pwshLinuxBuildAlpine" + 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 -C $(Build.ArtifactStagingDirectory)/pwshLinuxBuildAlpine + tar -xf $(Build.ArtifactStagingDirectory)/linuxTars/pwshLinuxBuildAlpine.tar.gz/pwshLinuxBuild.tar.gz -C $(Build.ArtifactStagingDirectory)/pwshLinuxBuildAlpine - Write-Verbose -Verbose -Message "Expanding $(Build.ArtifactStagingDirectory)/linuxTars/pwshLinuxBuildFxdependent.tar.gz to $(Build.ArtifactStagingDirectory)/pwshLinuxBuildFxdependent" + Write-Verbose -Verbose -Message "Expanding $(Build.ArtifactStagingDirectory)/linuxTars/pwshLinuxBuildFxdependent.tar.gz/pwshLinuxBuild.tar.gz to $(Build.ArtifactStagingDirectory)/pwshLinuxBuildFxdependent" New-Item -Path $(Build.ArtifactStagingDirectory)/pwshLinuxBuildFxdependent -ItemType Directory - tar -xf $(Build.ArtifactStagingDirectory)/linuxTars/pwshLinuxBuildFxdependent.tar.gz -C $(Build.ArtifactStagingDirectory)/pwshLinuxBuildFxdependent + tar -xf $(Build.ArtifactStagingDirectory)/linuxTars/pwshLinuxBuildFxdependent.tar.gz/pwshLinuxBuild.tar.gz -C $(Build.ArtifactStagingDirectory)/pwshLinuxBuildFxdependent displayName: Expand builds - template: SetVersionVariables.yml From 7681d8f4ef16b241b6a83405efc31ec0415676e2 Mon Sep 17 00:00:00 2001 From: Aditya Patwardhan Date: Tue, 15 Nov 2022 13:04:44 -0800 Subject: [PATCH 07/18] Fix tar compress --- tools/releaseBuild/azureDevOps/templates/linux.yml | 10 +++++----- .../azureDevOps/templates/signBuildFiles.yml | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/tools/releaseBuild/azureDevOps/templates/linux.yml b/tools/releaseBuild/azureDevOps/templates/linux.yml index 52ca7a7674b0..4333a1d7cf3f 100644 --- a/tools/releaseBuild/azureDevOps/templates/linux.yml +++ b/tools/releaseBuild/azureDevOps/templates/linux.yml @@ -129,19 +129,19 @@ jobs: sourceScanPath: '$(PowerShellRoot)/tools' - pwsh: | - tar -czvf $(System.ArtifactsDirectory)/pwshLinuxBuild.tar.gz '$(System.ArtifactsDirectory)/pwshLinuxBuild' + tar -czvf $(System.ArtifactsDirectory)/pwshLinuxBuild.tar.gz -C '$(System.ArtifactsDirectory)/pwshLinuxBuild' * displayName: Compress pwshLinuxBuild - ${{ if eq(variables.build,'deb') }} : - pwsh: | - tar -czvf $(System.ArtifactsDirectory)/pwshLinuxBuildMinSize.tar.gz '$(System.ArtifactsDirectory)/pwshLinuxBuildMinSize' - tar -czvf $(System.ArtifactsDirectory)/pwshLinuxBuildArm32.tar.gz '$(System.ArtifactsDirectory)/pwshLinuxBuildArm32' - tar -czvf $(System.ArtifactsDirectory)/pwshLinuxBuildArm64.tar.gz '$(System.ArtifactsDirectory)/pwshLinuxBuildArm64' + tar -czvf $(System.ArtifactsDirectory)/pwshLinuxBuildMinSize.tar.gz -C '$(System.ArtifactsDirectory)/pwshLinuxBuildMinSize' * + tar -czvf $(System.ArtifactsDirectory)/pwshLinuxBuildArm32.tar.gz -C '$(System.ArtifactsDirectory)/pwshLinuxBuildArm32' * + tar -czvf $(System.ArtifactsDirectory)/pwshLinuxBuildArm64.tar.gz -C '$(System.ArtifactsDirectory)/pwshLinuxBuildArm64' * displayName: Compress deb - ${{ if eq(variables.build,'rpm') }} : - pwsh: | - tar -czvf $(System.ArtifactsDirectory)/pwshMarinerBuildAmd64.tar.gz '$(System.ArtifactsDirectory)/pwshMarinerBuildAmd64' + tar -czvf $(System.ArtifactsDirectory)/pwshMarinerBuildAmd64.tar.gz -C '$(System.ArtifactsDirectory)/pwshMarinerBuildAmd64' * displayName: Compress pwshMarinerBuildAmd64 - ${{ if eq(variables.build,'deb') }} : diff --git a/tools/releaseBuild/azureDevOps/templates/signBuildFiles.yml b/tools/releaseBuild/azureDevOps/templates/signBuildFiles.yml index 6df7c9cc10c1..511cdbc39a83 100644 --- a/tools/releaseBuild/azureDevOps/templates/signBuildFiles.yml +++ b/tools/releaseBuild/azureDevOps/templates/signBuildFiles.yml @@ -178,7 +178,7 @@ steps: $uploadTarFilePath = '$(System.ArtifactsDirectory)/${{ parameters.binLocation }}.tar.gz' Write-Verbose -Verbose -Message "Creating tar.gz - $uploadTarFilePath" - tar -czvf $uploadTarFilePath $uploadFolder + tar -czvf $uploadTarFilePath -C $uploadFolder * Write-Host "##vso[artifact.upload containerfolder=$containerName;artifactname=$containerName]$uploadTarFilePath" displayName: ${{ parameters.buildPrefixName }} - Upload signed files to artifacts From 004d9e6cbc8ca1d47a965df3ee0675fca3cff87b Mon Sep 17 00:00:00 2001 From: Aditya Patwardhan Date: Tue, 15 Nov 2022 13:46:09 -0800 Subject: [PATCH 08/18] Add set-location before tar --- .../releaseBuild/azureDevOps/templates/linux.yml | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/tools/releaseBuild/azureDevOps/templates/linux.yml b/tools/releaseBuild/azureDevOps/templates/linux.yml index 4333a1d7cf3f..913d5cad3846 100644 --- a/tools/releaseBuild/azureDevOps/templates/linux.yml +++ b/tools/releaseBuild/azureDevOps/templates/linux.yml @@ -129,19 +129,24 @@ jobs: sourceScanPath: '$(PowerShellRoot)/tools' - pwsh: | - tar -czvf $(System.ArtifactsDirectory)/pwshLinuxBuild.tar.gz -C '$(System.ArtifactsDirectory)/pwshLinuxBuild' * + Set-Location '$(System.ArtifactsDirectory)/pwshLinuxBuild' + tar -czvf $(System.ArtifactsDirectory)/pwshLinuxBuild.tar.gz * displayName: Compress pwshLinuxBuild - ${{ if eq(variables.build,'deb') }} : - pwsh: | - tar -czvf $(System.ArtifactsDirectory)/pwshLinuxBuildMinSize.tar.gz -C '$(System.ArtifactsDirectory)/pwshLinuxBuildMinSize' * - tar -czvf $(System.ArtifactsDirectory)/pwshLinuxBuildArm32.tar.gz -C '$(System.ArtifactsDirectory)/pwshLinuxBuildArm32' * - tar -czvf $(System.ArtifactsDirectory)/pwshLinuxBuildArm64.tar.gz -C '$(System.ArtifactsDirectory)/pwshLinuxBuildArm64' * + Set-Location '$(System.ArtifactsDirectory)/pwshLinuxBuildMinSize' + tar -czvf $(System.ArtifactsDirectory)/pwshLinuxBuildMinSize.tar.gz * + Set-Location '$(System.ArtifactsDirectory)/pwshLinuxBuildArm32' + tar -czvf $(System.ArtifactsDirectory)/pwshLinuxBuildArm32.tar.gz * + Set-Location '$(System.ArtifactsDirectory)/pwshLinuxBuildArm64' + tar -czvf $(System.ArtifactsDirectory)/pwshLinuxBuildArm64.tar.gz * displayName: Compress deb - ${{ if eq(variables.build,'rpm') }} : - pwsh: | - tar -czvf $(System.ArtifactsDirectory)/pwshMarinerBuildAmd64.tar.gz -C '$(System.ArtifactsDirectory)/pwshMarinerBuildAmd64' * + Set-Location '$(System.ArtifactsDirectory)/pwshMarinerBuildAmd64' + tar -czvf $(System.ArtifactsDirectory)/pwshMarinerBuildAmd64.tar.gz * displayName: Compress pwshMarinerBuildAmd64 - ${{ if eq(variables.build,'deb') }} : From 9e69f3f25a164f379eb98d5ae033a54288457989 Mon Sep 17 00:00:00 2001 From: Aditya Patwardhan Date: Tue, 15 Nov 2022 16:50:23 -0800 Subject: [PATCH 09/18] Create dirs before expanding --- tools/releaseBuild/azureDevOps/templates/linux-packaging.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tools/releaseBuild/azureDevOps/templates/linux-packaging.yml b/tools/releaseBuild/azureDevOps/templates/linux-packaging.yml index f54fa51f28bf..791f4e02ed13 100644 --- a/tools/releaseBuild/azureDevOps/templates/linux-packaging.yml +++ b/tools/releaseBuild/azureDevOps/templates/linux-packaging.yml @@ -135,22 +135,27 @@ jobs: - pwsh: | if ('$(build)' -eq 'deb' -or '$(build)' -eq 'deb') { Write-Verbose -Verbose "Expanding $(Build.ArtifactStagingDirectory)/pwshLinuxBuild-signed/pwshLinuxBuild.tar.gz to $(Build.ArtifactStagingDirectory)/pwshLinuxBuild" + New-Item -Path $(Build.ArtifactStagingDirectory)/pwshLinuxBuild -ItemType Directory tar -xf $(Build.ArtifactStagingDirectory)/pwshLinuxBuild-signed/pwshLinuxBuild.tar.gz -C $(Build.ArtifactStagingDirectory)/pwshLinuxBuild } if ('$(build)' -eq 'deb') { Write-Verbose -Verbose "Expanding $(Build.ArtifactStagingDirectory)/pwshLinuxBuildMinSize-signed/pwshLinuxBuildMinSize.tar.gz to $(Build.ArtifactStagingDirectory)/pwshLinuxBuildMinSize" + New-Item -Path $(Build.ArtifactStagingDirectory)/pwshLinuxBuildMinSize -ItemType Directory tar -xf $(Build.ArtifactStagingDirectory)/pwshLinuxBuildMinSize-signed/pwshLinuxBuildMinSize.tar.gz -C $(Build.ArtifactStagingDirectory)/pwshLinuxBuildMinSize Write-Verbose -Verbose "Expanding $(Build.ArtifactStagingDirectory)/pwshLinuxBuildArm32-signed/pwshLinuxBuildArm32.tar.gz to $(Build.ArtifactStagingDirectory)/pwshLinuxBuildArm32" + New-Item -Path $(Build.ArtifactStagingDirectory)/pwshLinuxBuildArm32 -ItemType Directory tar -xf $(Build.ArtifactStagingDirectory)/pwshLinuxBuildArm32-signed/pwshLinuxBuildArm32.tar.gz -C $(Build.ArtifactStagingDirectory)/pwshLinuxBuildArm32 Write-Verbose -Verbose "Expanding $(Build.ArtifactStagingDirectory)/pwshLinuxBuildArm64-signed/pwshLinuxBuildArm64.tar.gz to $(Build.ArtifactStagingDirectory)/pwshLinuxBuildArm64" + New-Item -Path $(Build.ArtifactStagingDirectory)/pwshLinuxBuildArm64 -ItemType Directory tar -xf $(Build.ArtifactStagingDirectory)/pwshLinuxBuildArm64-signed/pwshLinuxBuildArm64.tar.gz -C $(Build.ArtifactStagingDirectory)/pwshLinuxBuildArm64 } if ('$(build)' -eq 'rpm') { 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 } From c1c8db1f4a081e6a83f54e99340e98e37be32800 Mon Sep 17 00:00:00 2001 From: Aditya Patwardhan Date: Tue, 15 Nov 2022 16:52:00 -0800 Subject: [PATCH 10/18] Create dir before expanding --- tools/releaseBuild/azureDevOps/templates/linux-packaging.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/tools/releaseBuild/azureDevOps/templates/linux-packaging.yml b/tools/releaseBuild/azureDevOps/templates/linux-packaging.yml index 791f4e02ed13..c7b72ed7ed90 100644 --- a/tools/releaseBuild/azureDevOps/templates/linux-packaging.yml +++ b/tools/releaseBuild/azureDevOps/templates/linux-packaging.yml @@ -161,6 +161,7 @@ jobs: if ('$(build)' -eq 'alpine') { Write-Verbose -Verbose "Expanding $(Build.ArtifactStagingDirectory)/pwshLinuxBuildAlpine-signed/pwshLinuxBuildAlpine.tar.gz to $(Build.ArtifactStagingDirectory)/pwshLinuxBuild" + New-Item -Path $(Build.ArtifactStagingDirectory)/pwshLinuxBuild -ItemType Directory tar -xf $(Build.ArtifactStagingDirectory)/pwshLinuxBuildAlpine-signed/pwshLinuxBuildAlpine.tar.gz -C $(Build.ArtifactStagingDirectory)/pwshLinuxBuild } From 297f65971ef27d85553a4dbe2422fb0520a58368 Mon Sep 17 00:00:00 2001 From: Aditya Patwardhan Date: Tue, 15 Nov 2022 18:17:29 -0800 Subject: [PATCH 11/18] Fix conditions --- tools/releaseBuild/azureDevOps/templates/linux-packaging.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tools/releaseBuild/azureDevOps/templates/linux-packaging.yml b/tools/releaseBuild/azureDevOps/templates/linux-packaging.yml index c7b72ed7ed90..6837444b1be4 100644 --- a/tools/releaseBuild/azureDevOps/templates/linux-packaging.yml +++ b/tools/releaseBuild/azureDevOps/templates/linux-packaging.yml @@ -133,7 +133,7 @@ jobs: displayName: Capture downloads - pwsh: | - if ('$(build)' -eq 'deb' -or '$(build)' -eq 'deb') { + if ('$(build)' -eq 'deb' -or '$(build)' -eq 'rpm') { Write-Verbose -Verbose "Expanding $(Build.ArtifactStagingDirectory)/pwshLinuxBuild-signed/pwshLinuxBuild.tar.gz to $(Build.ArtifactStagingDirectory)/pwshLinuxBuild" New-Item -Path $(Build.ArtifactStagingDirectory)/pwshLinuxBuild -ItemType Directory tar -xf $(Build.ArtifactStagingDirectory)/pwshLinuxBuild-signed/pwshLinuxBuild.tar.gz -C $(Build.ArtifactStagingDirectory)/pwshLinuxBuild @@ -167,6 +167,7 @@ jobs: if ('$(build)' -eq 'fxdependent') { Write-Verbose -Verbose "Expanding $(Build.ArtifactStagingDirectory)/pwshLinuxBuildFxdependent-signed/pwshLinuxBuildFxdependent.tar.gz to $(Build.ArtifactStagingDirectory)/pwshLinuxBuild" + New-Item -Path $(Build.ArtifactStagingDirectory)/pwshLinuxBuild -ItemType Directory tar -xf $(Build.ArtifactStagingDirectory)/pwshLinuxBuildFxdependent-signed/pwshLinuxBuildFxdependent.tar.gz -C $(Build.ArtifactStagingDirectory)/pwshLinuxBuild } displayName: Expand all signed tar.gz From ef3259e594f667c5708bf369eb6018cca25af968 Mon Sep 17 00:00:00 2001 From: Aditya Patwardhan Date: Wed, 16 Nov 2022 10:13:14 -0800 Subject: [PATCH 12/18] Add logging --- tools/packaging/packaging.psm1 | 2 +- .../azureDevOps/templates/linux-authenticode-sign.yml | 2 ++ tools/releaseBuild/azureDevOps/templates/linux.yml | 6 ++++++ tools/releaseBuild/azureDevOps/templates/signBuildFiles.yml | 3 +++ 4 files changed, 12 insertions(+), 1 deletion(-) diff --git a/tools/packaging/packaging.psm1 b/tools/packaging/packaging.psm1 index 00d7715b0c6b..2a83dae671af 100644 --- a/tools/packaging/packaging.psm1 +++ b/tools/packaging/packaging.psm1 @@ -669,7 +669,7 @@ function New-TarballPackage { try { Push-Location -Path $Staging - tar $options $packagePath . + tar $options $packagePath * } finally { Pop-Location } diff --git a/tools/releaseBuild/azureDevOps/templates/linux-authenticode-sign.yml b/tools/releaseBuild/azureDevOps/templates/linux-authenticode-sign.yml index 202b4da41a7f..aa0d7ebcb8af 100644 --- a/tools/releaseBuild/azureDevOps/templates/linux-authenticode-sign.yml +++ b/tools/releaseBuild/azureDevOps/templates/linux-authenticode-sign.yml @@ -68,6 +68,8 @@ jobs: Write-Verbose -Verbose -Message "Expanding $(Build.ArtifactStagingDirectory)/linuxTars/pwshLinuxBuild.tar.gz to $(Build.ArtifactStagingDirectory)/pwshLinuxBuild" New-Item -Path $(Build.ArtifactStagingDirectory)/pwshLinuxBuild -ItemType Directory tar -xf $(Build.ArtifactStagingDirectory)/linuxTars/pwshLinuxBuild.tar.gz -C $(Build.ArtifactStagingDirectory)/pwshLinuxBuild + Write-Verbose -Verbose "File permisions after expanding" + Get-ChildItem -Path $(Build.ArtifactStagingDirectory)/pwshLinuxBuild/pwsh | Select-Object -Property 'unixmode', 'size', 'name' Write-Verbose -Verbose -Message "Expanding $(Build.ArtifactStagingDirectory)/linuxTars/pwshLinuxBuildMinSize.tar.gz to $(Build.ArtifactStagingDirectory)/pwshLinuxBuildMinSize" New-Item -Path $(Build.ArtifactStagingDirectory)/pwshLinuxBuildMinSize -ItemType Directory diff --git a/tools/releaseBuild/azureDevOps/templates/linux.yml b/tools/releaseBuild/azureDevOps/templates/linux.yml index 913d5cad3846..03358e2a5ec7 100644 --- a/tools/releaseBuild/azureDevOps/templates/linux.yml +++ b/tools/releaseBuild/azureDevOps/templates/linux.yml @@ -71,6 +71,10 @@ jobs: Import-Module "$env:POWERSHELLROOT/tools/packaging" Invoke-AzDevOpsLinuxPackageBuild -ReleaseTag '$(ReleaseTagVar)' -BuildType '$(build)' + + Write-Verbose -Verbose "File permisions after building" + Get-ChildItem -Path $(System.ArtifactsDirectory)/pwshLinuxBuild/pwsh | Select-Object -Property 'unixmode', 'size', 'name' + } catch { Get-Error throw @@ -130,6 +134,8 @@ jobs: - pwsh: | Set-Location '$(System.ArtifactsDirectory)/pwshLinuxBuild' + Write-Verbose -Verbose "File permisions before compressing" + Get-ChildItem -Path $(Build.ArtifactStagingDirectory)/pwshLinuxBuild/pwsh | Select-Object -Property 'unixmode', 'size', 'name' tar -czvf $(System.ArtifactsDirectory)/pwshLinuxBuild.tar.gz * displayName: Compress pwshLinuxBuild diff --git a/tools/releaseBuild/azureDevOps/templates/signBuildFiles.yml b/tools/releaseBuild/azureDevOps/templates/signBuildFiles.yml index 511cdbc39a83..f8a252da21ce 100644 --- a/tools/releaseBuild/azureDevOps/templates/signBuildFiles.yml +++ b/tools/releaseBuild/azureDevOps/templates/signBuildFiles.yml @@ -176,6 +176,9 @@ steps: $uploadFolder = '$(System.ArtifactsDirectory)/${{ parameters.binLocation }}' $containerName = 'authenticode-signed' + Write-Verbose -Verbose "File permissions after signing" + Get-ChildItem $uploadFolder\pwsh | Select-Object -Property 'unixmode', 'size', 'name' + $uploadTarFilePath = '$(System.ArtifactsDirectory)/${{ parameters.binLocation }}.tar.gz' Write-Verbose -Verbose -Message "Creating tar.gz - $uploadTarFilePath" tar -czvf $uploadTarFilePath -C $uploadFolder * From c1542f63eafdf9af03f56db76b66519e60586e60 Mon Sep 17 00:00:00 2001 From: Aditya Patwardhan Date: Thu, 17 Nov 2022 13:29:54 -0800 Subject: [PATCH 13/18] Export file permission to json --- tools/packaging/packaging.psm1 | 41 ++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/tools/packaging/packaging.psm1 b/tools/packaging/packaging.psm1 index 2a83dae671af..b814a884baac 100644 --- a/tools/packaging/packaging.psm1 +++ b/tools/packaging/packaging.psm1 @@ -4567,6 +4567,8 @@ function Invoke-AzDevOpsLinuxPackageBuild { $buildFolder = "${env:SYSTEM_ARTIFACTSDIRECTORY}/${mainLinuxBuildFolder}" Start-PSBuild @buildParams @releaseTagParam -Output $buildFolder -PSOptionsPath "${buildFolder}-meta/psoptions.json" + Get-ChildItem -Path $buildFolder -Recurse -File | Export-LinuxFilePermission -FilePath "${buildFolder}-meta/linuxFilePermission.json" -RootPath ${buildFolder} -Force + # Remove symbol files. Remove-Item "${buildFolder}\*.pdb" -Force @@ -4587,6 +4589,7 @@ function Invoke-AzDevOpsLinuxPackageBuild { 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 ## Build 'linux-arm' and create 'tar.gz' package for it. ## Note that 'linux-arm' can only be built on Ubuntu environment. @@ -4594,11 +4597,13 @@ function Invoke-AzDevOpsLinuxPackageBuild { Start-PSBuild -Configuration Release -Restore -Runtime linux-arm -PSModuleRestore @releaseTagParam -Output $buildFolder -PSOptionsPath "${buildFolder}-meta/psoptions.json" # Remove symbol files. Remove-Item "${buildFolder}\*.pdb" -Force + Get-ChildItem -Path $buildFolder -Recurse -File | Export-LinuxFilePermission -FilePath "${buildFolder}-meta/linuxFilePermission.json" -RootPath ${buildFolder} -Force $buildFolder = "${env:SYSTEM_ARTIFACTSDIRECTORY}/${arm64LinuxBuildFolder}" Start-PSBuild -Configuration Release -Restore -Runtime linux-arm64 -PSModuleRestore @releaseTagParam -Output $buildFolder -PSOptionsPath "${buildFolder}-meta/psoptions.json" # Remove symbol files. 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 $options = Get-PSOptions @@ -4616,6 +4621,7 @@ function Invoke-AzDevOpsLinuxPackageBuild { 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 { @@ -4624,6 +4630,41 @@ function Invoke-AzDevOpsLinuxPackageBuild { } } +function Export-LinuxFilePermission { + [CmdletBinding()] + param ( + [Parameter(Mandatory)] [string] $FilePath, + [Parameter(Mandatory)] [string] $RootPath, + [Parameter(Mandatory, ValueFromPipeline = $true)] [System.IO.FileInfo[]] $InputObject, + [Parameter()] [switch] $Force + ) + + begin { + if ((Test-Path $FilePath) -and (-not $Force)) { + throw "File '$FilePath' already exists." + } + + if ($Force) { + Remove-Item $FilePath -Force + } + + $fileData = @{} + } + + process { + foreach ($object in $InputObject) { + Write-Verbose "Processing $($object.FullName)" + $filePerms = [convert]::ToString($object.unixstat.mode, 8).substring(3) + $relativePath = [System.IO.Path]::GetRelativePath($RootPath, $_.FullName) + $fileData.Add($relativePath, $filePerms) + } + } + + end { + $fileData | ConvertTo-Json -Depth 10 | Out-File -FilePath $FilePath + } +} + enum PackageManifestResultStatus { Mismatch Match From f09d09580354d190ec2bd9f5c0ab1413406da4aa Mon Sep 17 00:00:00 2001 From: Aditya Patwardhan Date: Thu, 17 Nov 2022 14:43:41 -0800 Subject: [PATCH 14/18] Fix for condition --- tools/packaging/packaging.psm1 | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/tools/packaging/packaging.psm1 b/tools/packaging/packaging.psm1 index b814a884baac..77232431af4b 100644 --- a/tools/packaging/packaging.psm1 +++ b/tools/packaging/packaging.psm1 @@ -4640,12 +4640,13 @@ function Export-LinuxFilePermission { ) begin { - if ((Test-Path $FilePath) -and (-not $Force)) { + if (Test-Path $FilePath) { + if (-not $Force) { throw "File '$FilePath' already exists." - } - - if ($Force) { + } + else { Remove-Item $FilePath -Force + } } $fileData = @{} From 7e1ddead4094726f05f0ee53d0e235b23a131d8f Mon Sep 17 00:00:00 2001 From: Aditya Patwardhan Date: Fri, 18 Nov 2022 13:03:04 -0800 Subject: [PATCH 15/18] Apply file permissions before packaging --- tools/packaging/packaging.psm1 | 47 ++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/tools/packaging/packaging.psm1 b/tools/packaging/packaging.psm1 index 77232431af4b..f7a3a1699520 100644 --- a/tools/packaging/packaging.psm1 +++ b/tools/packaging/packaging.psm1 @@ -4480,15 +4480,21 @@ function Invoke-AzDevOpsLinuxPackageCreation { switch ($BuildType) { 'fxdependent' { + $filePermissionFile = "${env:SYSTEM_ARTIFACTSDIRECTORY}\${mainLinuxBuildFolder}-meta\linuxFilePermission.json" + Set-LinuxFilePermission -FilePath $filePermissionFile -RootPath "${env:SYSTEM_ARTIFACTSDIRECTORY}\${mainLinuxBuildFolder}" Start-PSPackage -Type 'fxdependent' @releaseTagParam -LTS:$LTS } 'alpine' { + $filePermissionFile = "${env:SYSTEM_ARTIFACTSDIRECTORY}\${mainLinuxBuildFolder}-meta\linuxFilePermission.json" + Set-LinuxFilePermission -FilePath $filePermissionFile -RootPath "${env:SYSTEM_ARTIFACTSDIRECTORY}\${mainLinuxBuildFolder}" Start-PSPackage -Type 'tar-alpine' @releaseTagParam -LTS:$LTS } 'rpm' { Start-PSPackage -Type 'rpm' @releaseTagParam -LTS:$LTS } default { + $filePermissionFile = "${env:SYSTEM_ARTIFACTSDIRECTORY}\${mainLinuxBuildFolder}-meta\linuxFilePermission.json" + Set-LinuxFilePermission -FilePath $filePermissionFile -RootPath "${env:SYSTEM_ARTIFACTSDIRECTORY}\${mainLinuxBuildFolder}" Start-PSPackage @releaseTagParam -LTS:$LTS -Type 'deb', 'tar' } } @@ -4498,6 +4504,9 @@ function Invoke-AzDevOpsLinuxPackageCreation { Restore-PSOptions -PSOptionsPath "${env:SYSTEM_ARTIFACTSDIRECTORY}\${minSizeLinuxBuildFolder}-meta\psoptions.json" + $filePermissionFile = "${env:SYSTEM_ARTIFACTSDIRECTORY}\${minSizeLinuxBuildFolder}-meta\linuxFilePermission.json" + Set-LinuxFilePermission -FilePath $filePermissionFile -RootPath "${env:SYSTEM_ARTIFACTSDIRECTORY}\${minSizeLinuxBuildFolder}" + Write-Verbose -Verbose "---- Min-Size ----" Write-Verbose -Verbose "options.Output: $($options.Output)" Write-Verbose -Verbose "options.Top $($options.Top)" @@ -4507,14 +4516,20 @@ function Invoke-AzDevOpsLinuxPackageCreation { ## Create 'linux-arm' 'tar.gz' package. ## Note that 'linux-arm' can only be built on Ubuntu environment. Restore-PSOptions -PSOptionsPath "${env:SYSTEM_ARTIFACTSDIRECTORY}\${arm32LinuxBuildFolder}-meta\psoptions.json" + $filePermissionFile = "${env:SYSTEM_ARTIFACTSDIRECTORY}\${arm32LinuxBuildFolder}-meta\linuxFilePermission.json" + Set-LinuxFilePermission -FilePath $filePermissionFile -RootPath "${env:SYSTEM_ARTIFACTSDIRECTORY}\${arm32LinuxBuildFolder}" Start-PSPackage -Type tar-arm @releaseTagParam -LTS:$LTS ## Create 'linux-arm64' 'tar.gz' package. ## Note that 'linux-arm64' can only be built on Ubuntu environment. Restore-PSOptions -PSOptionsPath "${env:SYSTEM_ARTIFACTSDIRECTORY}\${arm64LinuxBuildFolder}-meta\psoptions.json" + $filePermissionFile = "${env:SYSTEM_ARTIFACTSDIRECTORY}\${arm64LinuxBuildFolder}-meta\linuxFilePermission.json" + Set-LinuxFilePermission -FilePath $filePermissionFile -RootPath "${env:SYSTEM_ARTIFACTSDIRECTORY}\${arm64LinuxBuildFolder}" Start-PSPackage -Type tar-arm64 @releaseTagParam -LTS:$LTS } elseif ($BuildType -eq 'rpm') { 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}" Write-Verbose -Verbose "---- rpm-fxdependent ----" Write-Verbose -Verbose "options.Output: $($options.Output)" @@ -4630,6 +4645,38 @@ function Invoke-AzDevOpsLinuxPackageBuild { } } +function Set-LinuxFilePermission { + [CmdletBinding()] + param ( + [Parameter(Mandatory)] [string] $FilePath, + [Parameter(Mandatory)] [string] $RootPath + ) + + if (-not (Test-Path $FilePath)) { + throw "File does not exist: $FilePath" + } + + if (-not (Test-Path $RootPath)) { + throw "File does not exist: $RootPath" + } + + try { + Push-Location $RootPath + $filePermission = Get-Content $FilePath -Raw | ConvertFrom-Json -AsHashtable + + foreach ($file in $filePermission) { + $file = $file.Key + $permission = $filePermission[$file] + $fileFullName = Join-Path -Path $RootPath -ChildPath $file + Write-Verbose "Set permission $permission to $fileFullName" -Verbose + chmod $permission $fileFullName + } + } + finally { + Pop-Location + } +} + function Export-LinuxFilePermission { [CmdletBinding()] param ( From 489dd0df3c1b2187b8bdf48b6fbfad138c083d19 Mon Sep 17 00:00:00 2001 From: Aditya Patwardhan Date: Fri, 18 Nov 2022 14:31:27 -0800 Subject: [PATCH 16/18] Add logging --- tools/packaging/packaging.psm1 | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tools/packaging/packaging.psm1 b/tools/packaging/packaging.psm1 index f7a3a1699520..0faf9e4caeff 100644 --- a/tools/packaging/packaging.psm1 +++ b/tools/packaging/packaging.psm1 @@ -4664,9 +4664,11 @@ function Set-LinuxFilePermission { Push-Location $RootPath $filePermission = Get-Content $FilePath -Raw | ConvertFrom-Json -AsHashtable + Write-Verbose -Verbose -Message "Got file permission: $filePermission.Count for $FilePath" + foreach ($file in $filePermission) { $file = $file.Key - $permission = $filePermission[$file] + $permission = $file.Value $fileFullName = Join-Path -Path $RootPath -ChildPath $file Write-Verbose "Set permission $permission to $fileFullName" -Verbose chmod $permission $fileFullName From d6277836f8803a3079df71bd660861540131d86b Mon Sep 17 00:00:00 2001 From: Aditya Patwardhan Date: Sat, 19 Nov 2022 09:59:35 -0800 Subject: [PATCH 17/18] Fix issues --- tools/packaging/packaging.psm1 | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tools/packaging/packaging.psm1 b/tools/packaging/packaging.psm1 index 0faf9e4caeff..e9ab0afdf12e 100644 --- a/tools/packaging/packaging.psm1 +++ b/tools/packaging/packaging.psm1 @@ -4664,11 +4664,11 @@ function Set-LinuxFilePermission { Push-Location $RootPath $filePermission = Get-Content $FilePath -Raw | ConvertFrom-Json -AsHashtable - Write-Verbose -Verbose -Message "Got file permission: $filePermission.Count for $FilePath" + Write-Verbose -Verbose -Message "Got file permission: $($filePermission.Count) for $FilePath" - foreach ($file in $filePermission) { - $file = $file.Key - $permission = $file.Value + $filePermission.GetEnumerator() | ForEach-Object { + $file = $_.Name + $permission = $_.Value $fileFullName = Join-Path -Path $RootPath -ChildPath $file Write-Verbose "Set permission $permission to $fileFullName" -Verbose chmod $permission $fileFullName From 859b2403ddfce15707369c9a06e4e73a66f8c5e2 Mon Sep 17 00:00:00 2001 From: Aditya Patwardhan Date: Tue, 22 Nov 2022 10:45:03 -0800 Subject: [PATCH 18/18] Add comments --- tools/packaging/packaging.psm1 | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/tools/packaging/packaging.psm1 b/tools/packaging/packaging.psm1 index e9ab0afdf12e..28cb7bae632d 100644 --- a/tools/packaging/packaging.psm1 +++ b/tools/packaging/packaging.psm1 @@ -4645,6 +4645,21 @@ function Invoke-AzDevOpsLinuxPackageBuild { } } +<# + Apply the file permissions specified in the json file $FilePath to the files under $RootPath. + The format of the json file is like: + + { + "System.Net.WebClient.dll": "744", + "Schemas/PSMaml/developer.xsd": "644", + "ref/System.Security.AccessControl.dll": "744", + "ref/System.IO.dll": "744", + "cs/Microsoft.CodeAnalysis.resources.dll": "744", + "Schemas/PSMaml/base.xsd": "644", + "Schemas/PSMaml/structureProcedure.xsd": "644", + "ref/System.Net.Security.dll": "744" + } +#> function Set-LinuxFilePermission { [CmdletBinding()] param ( @@ -4679,6 +4694,24 @@ function Set-LinuxFilePermission { } } +<# + Store the linux file permissions for all the files under root path $RootPath to the json file $FilePath. + The json file stores them as relative paths to the root. + + The format of the json file is like: + + { + "System.Net.WebClient.dll": "744", + "Schemas/PSMaml/developer.xsd": "644", + "ref/System.Security.AccessControl.dll": "744", + "ref/System.IO.dll": "744", + "cs/Microsoft.CodeAnalysis.resources.dll": "744", + "Schemas/PSMaml/base.xsd": "644", + "Schemas/PSMaml/structureProcedure.xsd": "644", + "ref/System.Net.Security.dll": "744" + } + +#> function Export-LinuxFilePermission { [CmdletBinding()] param ( @@ -4704,6 +4737,7 @@ function Export-LinuxFilePermission { process { foreach ($object in $InputObject) { Write-Verbose "Processing $($object.FullName)" + # This gets the unix stat information for the file in the format that chmod expects, like '644'. $filePerms = [convert]::ToString($object.unixstat.mode, 8).substring(3) $relativePath = [System.IO.Path]::GetRelativePath($RootPath, $_.FullName) $fileData.Add($relativePath, $filePerms)