Joseph
Joseph

Reputation: 467

AzureDevOps Duplicate dist folder in pipelines build ? Why?

There is a duplication of a dist folder in the artifacts produced by the AzureDevOps -> Pipelines, the duplication is the /dist folder and also /drop/dist folder. EDIT: Full azure-pipeline.yml file

# Node.js with Angular
# Build a Node.js project that uses Angular.
# Add steps that analyze code, save build artifacts, deploy, and more:
# https://learn.microsoft.com/azure/devops/pipelines/languages/javascript

# Major modification referencing
# https://dev.to/thisdotmedia/continuously-integrating-angular-with-azure-devops-2k9l

trigger:
- master

pool:
  vmImage: 'ubuntu-latest'

steps:
- task: NodeTool@0
  inputs:
    versionSpec: '10.x'
  displayName: 'Install Node.js'

# Build angular app area
- script: npm install
  displayName: 'npm install'

- script: npx ng build --prod
  displayName: 'npm build'

# Testing area
- script: npm install puppeteer --save-dev
  displayName: 'Installing puppeteer (Headless browser for testing)'

- script: npx ng test --watch=false --codeCoverage=true
  displayName: 'Running Tests'

- task: PublishTestResults@2
  condition: succeededOrFailed()
  inputs:
    testResultsFormat: 'JUnit'
    testResultsFiles: '**/TEST-*.xml'
  displayName: 'Publish Test Results'

# Publishing items
#   deploy.psl (Powershell script to deploy)
- task: PublishBuildArtifacts@1
  inputs:
    PathtoPublish: 'deploy.ps1'
    ArtifactName: 'drop'
    publishLocation: 'Container'

#   Firebase.json
- task: PublishBuildArtifacts@1    
  displayName: 'Publish Artifact: Firebase.json'
  inputs:
    PathtoPublish: 'firebase.json'
    ArtifactName: 'drop'
    publishLocation: 'Container'

#   App
- task: PublishBuildArtifacts@1
  inputs:
    PathtoPublish: 'dist'
    ArtifactName: 'drop/dist'
    publishLocation: 'Container'
  displayName: 'Publish Artifacts'

#   Code Coverage Results
- task: PublishCodeCoverageResults@1
  condition: succeededOrFailed()
  inputs:
    codeCoverageTool: 'Cobertura'
    summaryFileLocation: '$(Build.SourcesDirectory)/coverage/ng-azure-devops/cobertura-coverage.xml'
  displayName: 'Publish Code Coverage Results'

- script: npx ng lint
  displayName: 'Code Analysis'

I've tried the using 'drop' as the ArtifactName, which will NOT produce a duplicate folder artifact anywhere. I am very confused on why 'drop/dist' will produce another '/dist' artifact

Image showing duplication of the dist folder

Upvotes: 1

Views: 2225

Answers (1)

Leo Liu
Leo Liu

Reputation: 76890

AzureDevOps Duplicate dist folder in pipelines build ? Why?

I could reproduce this issue on my side.

When we use the publish the artifacts dist folder with ArtifactName: drop/dist, Azure Devops will create a new folder drop first, then publish the artifacts dist folder to that folder drop.

You can get this message from the build log:

Upload '/home/vsts/work/1/s/dist' to file container: '#/3620698/drop/dist'

However, the drop folder is already present by default. When we publish the dist folder with with ArtifactName: drop/dist, there are two drop folder, then Azure devops will publish dist folder to those two drop folders:

enter image description here

In order to understand this problem more clearly, you could disable the Multi-stage pipelines in the Preview features, then you will get the output:

enter image description here

Obviously, there are two drop folders here, that is the reason why you get the Duplicate dist folder in pipelines build.

So, to resolve this issue, we could change the ArtifactName: drop/dist to ArtifactName: dropTest/dist:

enter image description here

Now, the duplicate dist folder disappears.

Hope this helps.

Upvotes: 1

Related Questions