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

如何将Azure Pipelines中Python脚本输出值保存到变量供后续使用?

实现Azure DevOps Pipeline中传递Python脚本输出值的方法

没问题,这个需求完全可以实现!你的思路方向是对的,只是shell语法上有个小细节需要调整,我给你详细说下正确的实现方式:

核心原理

Azure DevOps提供了##vso[task.setvariable]这个特殊命令,只要在任务日志中输出这条指令,流水线代理就会自动创建对应的变量供后续任务使用。关键是要正确捕获Python脚本的输出,并把它传递给这个命令。

正确的脚本写法(Bash环境)

如果你用的是Linux/macOS的Bash或者Windows的Git Bash,把你的任务改成这样:

steps:
  - script: |
      # 捕获Python脚本的输出到临时变量
      VERSION=$(python settings.py)
      # 通过vso命令设置流水线变量
      echo "##vso[task.setvariable variable=version]$VERSION"
    displayName: '从Python脚本提取并设置version变量'

这里要注意,你之前写的${python settings.py}是错误的shell语法,正确的命令捕获写法是$(command)。

其他环境的写法

如果你的流水线用的是PowerShell或者Cmd,写法会略有不同:

PowerShell环境

steps:
  - script: |
      $version = python settings.py
      Write-Host "##vso[task.setvariable variable=version]$version"
    displayName: '从Python脚本提取并设置version变量'
    shell: pwsh

Cmd环境

steps:
  - script: |
      for /f "delims=" %%v in ('python settings.py') do set VERSION=%%v
      echo ##vso[task.setvariable variable=version]!VERSION!
    displayName: '从Python脚本提取并设置version变量'
    shell: cmd

注意事项

  • 确保你的Python脚本只输出你需要的目标值到标准输出(stdout),不要有多余的print语句。如果有调试信息需要输出,可以把它们定向到标准错误(stderr),比如在Python中这样写:
    import sys
    print("调试信息", file=sys.stderr)
    print("1.0.0")  # 这是要传递的目标值
    
  • 变量设置后,后续任务可以直接用$(version)(Bash/PowerShell)或者%version%(Cmd)来引用这个变量。比如:
    - script: |
        echo "当前版本是:$(version)"
        # 这里可以用这个变量做其他操作,比如打包、发布等
      displayName: '使用version变量'
    

验证方法

运行流水线后,查看设置变量的任务日志,如果能看到类似##vso[task.setvariable variable=version]1.0.0的输出,就说明变量设置成功了,后续任务就能正常使用这个值。

内容的提问来源于stack exchange,提问作者Toni Miguel López

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:00:44