vsts/node-nightly-windows.yaml (114 lines of code) (raw):

name: $(BuildID)_$(BuildDefinitionName)_$(SourceBranchName)_$(Date:yyyyMMdd)$(Rev:.r) resources: - repo: self clean: true # Manual trigger only trigger: none pr: none parameters: - name: release displayName: 'Release to SDK partner storage account' type: boolean default: false variables: - name: vmImage value: 'windows-latest' - name: buildFolder value: $[ format('{0:yyyy}-{0:MM}-{0:dd}', pipeline.startTime) ] stages: - stage: SDL jobs: - job: sdl_checks displayName: 'SDL checks' pool: vmImage: 'windows-latest' steps: - template: common/sdl_steps.yaml - stage: Test dependsOn: ['SDL'] jobs: - job: run_tests displayName: 'Tests - Windows Node 14.x' pool: vmImage: $(vmImage) steps: - task: NodeTool@0 displayName: 'Use Node 14.x' inputs: versionSpec: '14.x' # Unit tests - script: | npm install npm run build npm run ci displayName: 'Unit Tests' env: IOTHUB_CONNECTION_STRING: $(IOTHUB-CONNECTION-STRING) - stage: Pack dependsOn: ['SDL', 'Test'] pool: vmImage: $(vmImage) jobs: - job: pack displayName: 'Package for Release' steps: # Run SBOM on source - task: AzureArtifacts.manifest-generator-task.manifest-generator-task.ManifestGeneratorTask@0 displayName: 'Generate software manifest for executable' inputs: BuildDropPath: $(Build.SourcesDirectory) # Publish SBOM manifest artifact - task: PublishBuildArtifacts@1 displayName: 'Publish build artifacts' inputs: pathToPublish: $(Build.SourcesDirectory)\_manifest artifactName: SBOM # Install dependencies - script: npm ci displayName: 'Install dependencies (CI)' - script: npm run build displayName: 'Typescript compile' # Pack npm archive - task: PowerShell@2 displayName: 'Create NPM pack archive' inputs: targetType: inline script: | $package = npm pack echo "##vso[task.setvariable variable=package]$package" workingDirectory: $(Build.SourcesDirectory) # copy packed npm archive to artifact staging / dist - task: CopyFiles@2 displayName: 'Copy packed archive to artifact staging' inputs: contents: $(package) targetFolder: $(Build.ArtifactStagingDirectory) sourceFolder: $(Build.SourcesDirectory) # publish artifacts to pipeline - task: PublishBuildArtifacts@1 displayName: 'Publish build artifacts' inputs: pathToPublish: $(Build.ArtifactStagingDirectory) artifactName: azure-iot-hub-node - stage: Release condition: ${{ parameters.release }} dependsOn: ['Pack'] pool: vmImage: $(vmImage) jobs: # Publish artifact to partner SDK storage - job: 'publish' displayName: 'Publish to SDK partner storage' steps: # Download artifact - task: DownloadBuildArtifacts@0 displayName : 'Download npm package from Build Artifacts' inputs: buildType: 'current' downloadType: 'single' artifactName: 'azure-iot-hub-node' downloadPath: $(Build.ArtifactStagingDirectory) # Copy packed npm archive to dated folder for release archive - task: CopyFiles@2 displayName: 'Copy packed archive to artifact staging' inputs: contents: '*.tgz' sourceFolder: $(Build.ArtifactStagingDirectory)\azure-iot-hub-node targetFolder: $(Build.ArtifactStagingDirectory)\release\$(buildFolder) # Copy to SDK partner release storage - task: AzureFileCopy@2 displayName: 'Copy Release Artifacts to Partner Release Pipeline' inputs: SourcePath: $(Build.ArtifactStagingDirectory)\release azureSubscription: azuresdkpartnerdropssc Destination: AzureBlob storage: azuresdkpartnerdrops ContainerName: 'drops/azure-iot-sdk/node/'