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 was merged in pull request #6.
This commit is contained in:
@@ -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
|
||||
}
|
||||
Reference in New Issue
Block a user