Switch packages for Ubuntu & macOS to use tar.gz format instead of zip (#6)
Switch to using tar.gz format for Ubuntu and macOS systems because it is much more common on nix systems which is important in container scenarios
This commit is contained in:
parent
e510e2cfd6
commit
9f83a0c6de
|
@ -14,16 +14,8 @@ jobs:
|
|||
filePath: './builders/build-node.ps1'
|
||||
arguments: '-Version $(Version) -Platform $(Platform) -Architecture $(Architecture)'
|
||||
|
||||
- task: ArchiveFiles@2
|
||||
displayName: 'Archive artifact'
|
||||
inputs:
|
||||
rootFolderOrFile: '$(Build.BinariesDirectory)'
|
||||
archiveType: zip
|
||||
includeRootFolder: false
|
||||
archiveFile: '$(Build.ArtifactStagingDirectory)/node-$(Version)-$(Platform)-$(Architecture).zip'
|
||||
|
||||
- task: PublishPipelineArtifact@1
|
||||
displayName: 'Publish Artifact: Node.js $(Version)'
|
||||
inputs:
|
||||
targetPath: '$(Build.ArtifactStagingDirectory)/node-$(Version)-$(Platform)-$(Architecture).zip'
|
||||
targetPath: '$(Build.ArtifactStagingDirectory)'
|
||||
artifactName: 'node-$(Version)-$(Platform)-$(Architecture)'
|
|
@ -8,7 +8,7 @@ jobs:
|
|||
submodules: true
|
||||
|
||||
- task: PowerShell@2
|
||||
displayName: Fully cleanup the toolcache directory
|
||||
displayName: Fully cleanup the toolcache directory before testing
|
||||
inputs:
|
||||
TargetType: inline
|
||||
script: |
|
||||
|
@ -25,7 +25,7 @@ jobs:
|
|||
|
||||
- task: ExtractFiles@1
|
||||
inputs:
|
||||
archiveFilePatterns: '$(Build.ArtifactStagingDirectory)/node-$(Version)-$(Platform)-$(Architecture).zip'
|
||||
archiveFilePatterns: '$(Build.ArtifactStagingDirectory)/node-$(Version)-$(Platform)-$(Architecture).*'
|
||||
destinationFolder: $(Build.BinariesDirectory)
|
||||
cleanDestinationFolder: false
|
||||
|
||||
|
|
|
@ -27,7 +27,7 @@ class NixNodeBuilder : NodeBuilder {
|
|||
) : Base($version, $platform, $architecture) {
|
||||
$this.InstallationTemplateName = "nix-setup-template.sh"
|
||||
$this.InstallationScriptName = "setup.sh"
|
||||
$this.OutputArtifactName = "tool.tar.gz"
|
||||
$this.OutputArtifactName = "node-$Version-$Platform-$Architecture.tar.gz"
|
||||
}
|
||||
|
||||
[uri] GetBinariesUri() {
|
||||
|
@ -41,7 +41,7 @@ class NixNodeBuilder : NodeBuilder {
|
|||
}
|
||||
|
||||
[void] ExtractBinaries($archivePath) {
|
||||
Extract-TarArchive -ArchivePath $archivePath -OutputDirectory $this.ArtifactLocation
|
||||
Extract-TarArchive -ArchivePath $archivePath -OutputDirectory $this.WorkFolderLocation
|
||||
}
|
||||
|
||||
[void] CreateInstallationScript() {
|
||||
|
@ -50,7 +50,7 @@ class NixNodeBuilder : NodeBuilder {
|
|||
Create Node.js artifact installation script based on template specified in InstallationTemplateName property.
|
||||
#>
|
||||
|
||||
$installationScriptLocation = New-Item -Path $this.ArtifactLocation -Name $this.InstallationScriptName -ItemType File
|
||||
$installationScriptLocation = New-Item -Path $this.WorkFolderLocation -Name $this.InstallationScriptName -ItemType File
|
||||
$installationTemplateLocation = Join-Path -Path $this.InstallationTemplatesLocation -ChildPath $this.InstallationTemplateName
|
||||
|
||||
$installationTemplateContent = Get-Content -Path $installationTemplateLocation -Raw
|
||||
|
@ -59,4 +59,9 @@ class NixNodeBuilder : NodeBuilder {
|
|||
|
||||
Write-Debug "Done; Installation script location: $installationScriptLocation)"
|
||||
}
|
||||
|
||||
[void] ArchiveArtifact() {
|
||||
$OutputPath = Join-Path $this.ArtifactFolderLocation $this.OutputArtifactName
|
||||
Create-TarArchive -SourceFolder $this.WorkFolderLocation -ArchivePath $OutputPath
|
||||
}
|
||||
}
|
||||
|
|
|
@ -30,7 +30,8 @@ class NodeBuilder {
|
|||
[string] $Platform
|
||||
[string] $Architecture
|
||||
[string] $TempFolderLocation
|
||||
[string] $ArtifactLocation
|
||||
[string] $WorkFolderLocation
|
||||
[string] $ArtifactFolderLocation
|
||||
[string] $InstallationTemplatesLocation
|
||||
|
||||
NodeBuilder ([version] $version, [string] $platform, [string] $architecture) {
|
||||
|
@ -38,8 +39,10 @@ class NodeBuilder {
|
|||
$this.Platform = $platform
|
||||
$this.Architecture = $architecture
|
||||
|
||||
$this.ArtifactLocation = $env:BUILD_BINARIESDIRECTORY
|
||||
$this.TempFolderLocation = $env:BUILD_STAGINGDIRECTORY
|
||||
$this.TempFolderLocation = [IO.Path]::GetTempPath()
|
||||
$this.WorkFolderLocation = $env:BUILD_BINARIESDIRECTORY
|
||||
$this.ArtifactFolderLocation = $env:BUILD_STAGINGDIRECTORY
|
||||
|
||||
|
||||
$this.InstallationTemplatesLocation = Join-Path -Path $PSScriptRoot -ChildPath "../installers"
|
||||
}
|
||||
|
@ -89,5 +92,8 @@ class NodeBuilder {
|
|||
|
||||
Write-Host "Create installation script..."
|
||||
$this.CreateInstallationScript()
|
||||
|
||||
Write-Host "Archive artifact"
|
||||
$this.ArchiveArtifact()
|
||||
}
|
||||
}
|
||||
|
|
|
@ -27,7 +27,7 @@ class WinNodeBuilder : NodeBuilder {
|
|||
) : Base($version, $platform, $architecture) {
|
||||
$this.InstallationTemplateName = "win-setup-template.ps1"
|
||||
$this.InstallationScriptName = "setup.ps1"
|
||||
$this.OutputArtifactName = "tool.7z"
|
||||
$this.OutputArtifactName = "node-$Version-$Platform-$Architecture.zip"
|
||||
}
|
||||
|
||||
[uri] GetBinariesUri() {
|
||||
|
@ -42,9 +42,9 @@ class WinNodeBuilder : NodeBuilder {
|
|||
|
||||
[void] ExtractBinaries($archivePath) {
|
||||
$extractTargetDirectory = Join-Path $this.TempFolderLocation "tempExtract"
|
||||
Extract-7ZipArchive -ArchivePath $archivePath -OutputDirectory $extractTargetDirectory
|
||||
Extract-SevenZipArchive -ArchivePath $archivePath -OutputDirectory $extractTargetDirectory
|
||||
$nodeOutputPath = Get-Item $extractTargetDirectory\* | Select-Object -First 1 -ExpandProperty Fullname
|
||||
Move-Item -Path $nodeOutputPath\* -Destination $this.ArtifactLocation
|
||||
Move-Item -Path $nodeOutputPath\* -Destination $this.WorkFolderLocation
|
||||
}
|
||||
|
||||
[void] CreateInstallationScript() {
|
||||
|
@ -53,7 +53,7 @@ class WinNodeBuilder : NodeBuilder {
|
|||
Create Node.js artifact installation script based on specified template.
|
||||
#>
|
||||
|
||||
$installationScriptLocation = New-Item -Path $this.ArtifactLocation -Name $this.InstallationScriptName -ItemType File
|
||||
$installationScriptLocation = New-Item -Path $this.WorkFolderLocation -Name $this.InstallationScriptName -ItemType File
|
||||
$installationTemplateLocation = Join-Path -Path $this.InstallationTemplatesLocation -ChildPath $this.InstallationTemplateName
|
||||
$installationTemplateContent = Get-Content -Path $installationTemplateLocation -Raw
|
||||
|
||||
|
@ -66,4 +66,9 @@ class WinNodeBuilder : NodeBuilder {
|
|||
$installationTemplateContent | Out-File -FilePath $installationScriptLocation
|
||||
Write-Debug "Done; Installation script location: $installationScriptLocation)"
|
||||
}
|
||||
|
||||
[void] ArchiveArtifact() {
|
||||
$OutputPath = Join-Path $this.ArtifactFolderLocation $this.OutputArtifactName
|
||||
Create-SevenZipArchive -SourceFolder $this.WorkFolderLocation -ArchivePath $OutputPath
|
||||
}
|
||||
}
|
||||
|
|
|
@ -12,5 +12,21 @@ function Extract-TarArchive {
|
|||
|
||||
Write-Debug "Extract $ArchivePath to $OutputDirectory"
|
||||
tar -C $OutputDirectory -xzf $ArchivePath --strip 1
|
||||
}
|
||||
|
||||
function Create-TarArchive {
|
||||
param(
|
||||
[Parameter(Mandatory=$true)]
|
||||
[String]$SourceFolder,
|
||||
[Parameter(Mandatory=$true)]
|
||||
[String]$ArchivePath,
|
||||
[string]$CompressionType = "gz"
|
||||
)
|
||||
|
||||
$CompressionTypeArgument = If ([string]::IsNullOrWhiteSpace($CompressionType)) { "" } else { "--${CompressionType}" }
|
||||
|
||||
Push-Location $SourceFolder
|
||||
Write-Debug "tar -c $CompressionTypeArgument -f $ArchivePath ."
|
||||
tar -c $CompressionTypeArgument -f $ArchivePath .
|
||||
Pop-Location
|
||||
}
|
|
@ -2,7 +2,7 @@
|
|||
.SYNOPSIS
|
||||
Unpack *.7z file
|
||||
#>
|
||||
function Extract-7ZipArchive {
|
||||
function Extract-SevenZipArchive {
|
||||
param(
|
||||
[Parameter(Mandatory=$true)]
|
||||
[String]$ArchivePath,
|
||||
|
@ -12,4 +12,23 @@ function Extract-7ZipArchive {
|
|||
|
||||
Write-Debug "Extract $ArchivePath to $OutputDirectory"
|
||||
7z x $ArchivePath -o"$OutputDirectory" -y | Out-Null
|
||||
}
|
||||
|
||||
function Create-SevenZipArchive {
|
||||
param(
|
||||
[Parameter(Mandatory=$true)]
|
||||
[String]$SourceFolder,
|
||||
[Parameter(Mandatory=$true)]
|
||||
[String]$ArchivePath,
|
||||
[String]$ArchiveType = "zip",
|
||||
[String]$CompressionLevel = 5
|
||||
)
|
||||
|
||||
$ArchiveTypeArgument = "-t${ArchiveType}"
|
||||
$CompressionLevelArgument = "-mx=${CompressionLevel}"
|
||||
|
||||
Push-Location $SourceFolder
|
||||
Write-Debug "7z a $ArchiveTypeArgument $CompressionLevelArgument $ArchivePath @$SourceFolder"
|
||||
7z a $ArchiveTypeArgument $CompressionLevelArgument $ArchivePath $SourceFolder\*
|
||||
Pop-Location
|
||||
}
|
Loading…
Reference in New Issue