Implement script to prepare packages with Node.js

This commit is contained in:
Maxim Lobanov
2020-04-23 12:58:18 +03:00
commit 4e7c1d2a13
26 changed files with 1486 additions and 0 deletions

View File

@@ -0,0 +1,29 @@
jobs:
- job: Build_Node
timeoutInMinutes: 90
pool:
name: Azure Pipelines
vmImage: ubuntu-latest
steps:
- checkout: self
- task: PowerShell@2
displayName: 'Build Node $(Version)'
inputs:
targetType: filePath
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'
artifactName: 'node-$(Version)-$(Platform)-$(Architecture)'

View File

@@ -0,0 +1,78 @@
jobs:
- job: Test_Node
pool:
name: Azure Pipelines
vmImage: $(VmImage)
steps:
- checkout: self
submodules: true
- task: PowerShell@2
displayName: Fully cleanup the toolcache directory
inputs:
TargetType: inline
script: |
$NodeToolcachePath = Join-Path -Path $env:AGENT_TOOLSDIRECTORY -ChildPath "node"
if (Test-Path $NodeToolcachePath) {
Remove-Item -Path $NodeToolcachePath -Recurse -Force
}
- task: DownloadPipelineArtifact@2
inputs:
source: 'current'
artifact: 'node-$(Version)-$(Platform)-$(Architecture)'
path: $(Build.ArtifactStagingDirectory)
- task: ExtractFiles@1
inputs:
archiveFilePatterns: '$(Build.ArtifactStagingDirectory)/node-$(Version)-$(Platform)-$(Architecture).zip'
destinationFolder: $(Build.BinariesDirectory)
cleanDestinationFolder: false
- task: PowerShell@2
displayName: 'Apply build artifact to the local machines'
inputs:
targetType: inline
script: |
if ("$(Platform)" -match 'win32') { powershell ./setup.ps1 } else { sh ./setup.sh }
workingDirectory: '$(Build.BinariesDirectory)'
- task: NodeTool@0
displayName: 'Use Node $(Version)'
inputs:
versionSpec: $(Version)
- task: PowerShell@2
displayName: 'Wait for the logs'
inputs:
targetType: inline
script: |
Write-Host "Fake step that do nothing"
Write-Host "We need it because log of previous step 'Use Node' is not available here yet."
Write-Host "In testing step (Node.Tests.ps1) we analyze build log of 'Use Node' task"
Write-Host "to determine if Node.js version was consumed from cache and was downloaded"
- task: PowerShell@2
displayName: 'Run tests'
inputs:
TargetType: inline
script: |
Install-Module Pester -Force -Scope CurrentUser
Import-Module Pester
$pesterParams = @{
Path="./Node.Tests.ps1";
Parameters=@{
Version="$(Version)";
}
}
Invoke-Pester -Script $pesterParams -OutputFile "test_results.xml" -OutputFormat NUnitXml
workingDirectory: '$(Build.SourcesDirectory)/tests'
- task: PublishTestResults@2
displayName: 'Publish test results'
inputs:
testResultsFiles: '*.xml'
testResultsFormat: NUnit
searchFolder: 'tests'
failTaskOnFailedTests: true
testRunTitle: "Node.js $(Version)-$(Platform)"
condition: always()