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

Azure DevOps Pipeline如何正确引用仓库内Python脚本的路径

解决方案

问题根因

你遇到的路径不存在报错,核心是对Azure DevOps的源码检出目录规则理解有误:默认情况下,Azure DevOps会将触发管道的对应仓库的所有内容直接拉取到$(Build.SourcesDirectory)根目录下,不会额外生成和仓库名同名的文件夹,所以你路径中多加的/vg层级实际不存在,最终触发报错。

分步修正方法

  • 首先可添加目录打印调试步骤(推荐排查路径问题时优先使用),在所有执行Python脚本的步骤之前加入以下配置,运行后可直接在日志中查看所有文件的真实路径:
- bash: ls -R $(Build.SourcesDirectory)
  displayName: 打印源码目录结构

  • 情况1:Python脚本和当前管道YAML文件都存储在vg仓库中,且main.py放在vg仓库的根目录
    直接删除路径中的/vg层级即可,修正后的完整配置如下:
steps:
# 可选的调试步骤
- bash: ls -R $(Build.SourcesDirectory)
  displayName: 打印源码目录结构

- task: PythonScript@0
  inputs:
    scriptSource: 'filePath'
    scriptPath: $(Build.SourcesDirectory)/main.py
    arguments: $(file_path) $(pat) $(organization) $(project) $(vg_name)

- bash: python $(Build.SourcesDirectory)/main.py
# 若poc为其他仓库脚本,参考对应规则调整路径即可
# - script: python $(Build.SourcesDirectory)/main.py

  • 情况2:vg仓库是管道执行时额外检出的非触发仓库
    需要先在steps最开头显式配置多仓库检出规则,指定检出路径为vg,原有路径配置即可正常生效,示例配置如下:
resources:
  repositories:
  - repository: vg
    type: git
    name: 你的实际项目名/vg # 替换为真实的项目/仓库名称
    ref: main # 替换为你需要拉取的分支名

steps:
- checkout: self # 若不需要拉取管道所在的当前仓库可删除此行
- checkout: vg
  path: 'vg' # 指定将vg仓库的内容检出到$(Build.SourcesDirectory)/vg目录下

- task: PythonScript@0
  inputs:
    scriptSource: 'filePath'
    scriptPath: $(Build.SourcesDirectory)/vg/main.py
    arguments: $(file_path) $(pat) $(organization) $(project) $(vg_name)

- bash: python $(Build.SourcesDirectory)/vg/main.py

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 16:06:04