Azure构建与发布流水线Node.js项目构建产物部署路径异常求助
问题根因
你的配置存在三处核心错误,共同导致产物路径嵌套层级异常:
- 构建流水线的
npm执行命令缺失构建步骤,仅执行了依赖安装,没有生成生产环境产物 - 构建归档任务配置错误,
includeRootFolder设为true会导致解压后额外多一层根目录,且PublishBuildArtifacts发布了整个工作目录,默认生成的drop成为产物的根层级 - 发布流水线的下载任务默认会把产物放到对应artifact名称(默认是
drop)的子目录下,直接下载到目标根目录就会多出一层drop路径,最终文件落到home/wwwroot/drop而非预期的home/wwwroot,服务找不到入口文件就会抛出权限类报错
修复方案
第一步:调整构建流水线配置
替换原有的脚本执行、归档、发布产物任务为以下内容:
# 补全npm构建命令,如果你项目的构建命令不是build可自行替换 - script: | npm install npm run build displayName: 'npm install and build' - task: ArchiveFiles@2 inputs: # 这里替换为你项目实际的构建产物输出目录,比如React项目是build,Vue项目是dist rootFolderOrFile: '$(System.DefaultWorkingDirectory)/dist' includeRootFolder: false # 关闭根目录嵌套,解压后直接是文件 archiveType: 'zip' archiveFile: '$(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip' replaceExistingArchive: true - task: PublishBuildArtifacts@1 inputs: PathtoPublish: '$(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip' # 仅发布打包好的压缩包 ArtifactName: 'drop' publishLocation: "Container"
第二步:调整发布流水线配置
新增解压任务直接将产物解压到目标根目录,避免多层嵌套:
steps: - task: DownloadBuildArtifacts@0 displayName: 'Download Build Artifacts' inputs: buildType: specific project: 'f736e2aa-631d-4bc0-a468-f8c8d1b3713a' pipeline: 15 downloadType: single artifactName: 'drop' downloadPath: '$(System.DefaultWorkingDirectory)' extractTars: false # 新增解压任务,直接输出到wwwroot根目录 - task: ExtractFiles@1 inputs: archiveFilePatterns: '**/$(Build.BuildId).zip' destinationFolder: '/home/wwwroot' cleanDestinationFolder: true overwriteExistingFiles: true
修改后构建产物会直接写入/home/wwwroot目录,不会多出drop层级,对应报错即可解决。
内容的提问来源于stack exchange,提问作者Tariq
相关产品推荐
相关产品推荐

