You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure DevOps管道部署失败:文件不存在及分支切换报错求助

问题

我尝试使用以下YAML脚本部署Azure DevOps管道:

# Starter pipeline
# Start with a minimal pipeline that you can customize to build and deploy your code.
# Add steps that build, test, and deploy your project.
# https://aka.ms/yaml

trigger:
- adf_publish

pool:
  vmImage: ubuntu-latest

steps:
- script: echo Hello, world!
  displayName: 'Run a one-line script'

- script: |
    echo Add other tasks to build, test, and deploy your project.
    echo See https://aka.ms/yaml
  displayName: 'Run a multi-line script'
- task: PublishBuildArtifacts@1
  displayName: 'Publish Artifact: drop'
  inputs:
    PathtoPublish: '$(Build.ArtifactStagingDirectory)'
    ArtifactName: 'drop'
    publishLocation: 'Container'
- task: AzurePowerShell@5
  displayName: 'Azure PowerShell script: MyNewPreDeployment'
  inputs:
    azureSubscription: NewConnectionName
    ScriptPath: '$(System.DefaultWorkingDirectory)/_Azure Data FactoryReName/drop/pre-and post-deployment.ps1'
    ScriptArguments: '-armTemplate "$(System.DefaultWorkingDirectory)/_Azure Data FactoryReName/drop/ARMTemplateForFactory.json" -ResourceGroupName $(ResourceGroup) -DataFactoryName $(DataFactory) -predeployment $true -deleteDeployment $false'
    azurePowerShellVersion: LatestVersion

运行时出现如下错误:

##[error]ENOENT: no such file or directory, stat '/home/vsts/work/1/s/_Azure Data FactoryReName/drop/pre-and post-deployment.ps1'

切换到adf_publish分支时还会出现其他报错,请问是否需要手动上传文件至Azure Data Factory CICDCapLogic?

解决方案
  • 排查文件路径有效性:先确认几个核心点:
    1. 检查_Azure Data FactoryReName文件夹名称是否正确,有没有拼写错误、空格或大小写不一致的问题。
    2. 确认pre-and post-deployment.ps1和ARMTemplateForFactory.json确实存在于adf_publish分支的对应目录下。
  • 关于adf_publish分支的说明:这个分支是Azure Data Factory自动生成的,包含自动打包的ARM模板和部署脚本,正常情况下不需要手动上传文件到CICDCapLogic。如果切换分支报错,大概率是分支内容不完整或被篡改:
    1. 重新从Data Factory的发布界面触发发布,生成完整的adf_publish分支内容。
    2. 确保管道拉取的是最新、未被手动修改过的adf_publish分支版本。
  • 调整管道路径引用逻辑:
    1. 当前管道先发布工件,再去源代码目录找文件,逻辑矛盾。应该先确保脚本和模板文件被复制到$(Build.ArtifactStagingDirectory),再执行发布;或者直接从源代码目录引用文件后再发布工件,调整步骤顺序。
    2. 建议使用构建变量替代硬编码路径,比如用$(Pipeline.Workspace)/drop/xxx,避免因代理环境差异导致路径错误。同时注意路径中的空格要正确用引号包裹。

内容的提问来源于stack exchange,提问作者Patterson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 00:42:38