Azure DevOps管道构建中dist文件夹重复问题咨询
我来帮你拆解这个Azure DevOps Pipelines的工件发布问题,核心是对PublishBuildArtifacts@1任务参数的理解偏差:
为什么会出现重复的dist文件夹?
你遇到的情况本质是混淆了ArtifactName的作用——它定义的是工件的名称,而不是工件内部的路径结构。
当你把第三个发布任务的
ArtifactName设为drop时:
三个PublishBuildArtifacts任务都指向同一个名为drop的工件。第三个任务会把本地的dist文件夹完整复制到drop工件里,最终drop工件的结构是:drop/ ├─ deploy.ps1 ├─ firebase.json └─ dist/ └─ 你的构建产物文件这里没有重复,因为所有内容都归集到同一个工件的对应位置。
当你把
ArtifactName改成drop/dist时:
第三个任务会创建一个全新的独立工件,名称就是drop/dist。这个任务会把本地dist文件夹里的所有内容直接放到这个新工件的根目录下。此时你在Azure DevOps工件界面看到的“/dist文件夹”其实是这个新工件的内容(界面会把带路径分隔符的工件名称显示成目录结构),而原来的drop工件依然存在(只包含deploy.ps1和firebase.json)。你误以为是同一个工件里的重复文件夹,实际上是两个独立的工件。
如何正确把dist放到drop的子目录里?
如果你想让dist的内容出现在drop工件的dist子目录下,而不是创建新工件,只需要保持ArtifactName为drop即可:
修改第三个发布任务的配置:
# App - task: PublishBuildArtifacts@1 inputs: PathtoPublish: 'dist' ArtifactName: 'drop' publishLocation: 'Container' displayName: 'Publish Artifacts'
这样所有内容都会发布到同一个drop工件中,最终结构就是drop/deploy.ps1、drop/firebase.json和drop/dist/[构建产物],完全符合你的预期,不会出现重复的混淆情况。
内容的提问来源于stack exchange,提问作者Joseph

