azure-devops - AzureDevOps 在管道构建中重复 dist 文件夹?为什么?
问题描述
AzureDevOps -> Pipelines 生成的工件中有一个 dist 文件夹的副本,该副本是 /dist 文件夹和 /drop/dist 文件夹。编辑:完整的 azure-pipeline.yml 文件
# Node.js with Angular
# Build a Node.js project that uses Angular.
# Add steps that analyze code, save build artifacts, deploy, and more:
# https://docs.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'
我已经尝试使用“drop”作为 ArtifactName,它不会在任何地方产生重复的文件夹工件。我很困惑为什么'drop/dist'会产生另一个'/dist'工件
解决方案
AzureDevOps 在管道构建中重复 dist 文件夹?为什么?
我可以在我这边重现这个问题。
当我们使用发布 artifactsdist
文件夹时ArtifactName: drop/dist
,Azure Devops 将首先创建一个新文件夹drop
,然后将 artifactsdist
文件夹发布到该文件夹drop
。
您可以从构建日志中获取此消息:
将“/home/vsts/work/1/s/dist”上传到文件容器:“#/3620698/drop/dist”
但是,drop
默认情况下该文件夹已经存在。当我们dist
使用 with 发布文件夹时ArtifactName: drop/dist
,有两个drop
文件夹,然后 Azure devops 会将dist
文件夹发布到这两个drop
文件夹:
为了更清楚地理解这个问题,您可以在Preview features中禁用Multi-stage pipelines,然后您将获得输出:
显然,这里有两个drop
文件夹,这就是你在管道构建中获得 Duplicate dist 文件夹的原因。
因此,要解决此问题,我们可以将其更改ArtifactName: drop/dist
为ArtifactName: dropTest/dist
:
现在,重复的 dist 文件夹消失了。
希望这可以帮助。
推荐阅读
- xamarin.forms - 如何使用 Windows 将应用程序发布到苹果商店
- node.js - Node.js - 在 docker 中使用时同步与异步 fs(微服务架构)
- string - 搜索名称与变量中的字符串部分匹配的文件
- python - Python文件写入txt文档但在读取时擦除
- android - 任务 ':app:installRelease' react-native 执行失败
- reactjs - 找不到模块“react-dom”的声明文件
- ruby-on-rails - 当两个 Rails 引擎定义一个同名的方法时,其中一个会覆盖
- python - 下拉小部件 Python
- amazon-web-services - 为 AWS Lightsail 后端实例设置 HTTPS
- javascript - 使用 javascript 在主 div 中切换其他 div 的显示