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

Azure DevOps构建流水线中如何将用户输入的UserStory传入Python脚本

Azure DevOps构建流水线参数传递问题解决

问题出在YAML脚本里的参数引用语法错误,Azure DevOps中引用预先定义的parameters参数,必须使用${{ parameters.UserStory }}格式,而不是直接写${UserStory},这才导致参数值无法正确传递。

下面提供两种可行的解决方法:

方法一:修正环境变量传递方式

修改后的YAML配置如下:

trigger:
- main

pool:
  vmImage: 'ubuntu-latest'

parameters:
  - name: UserStory
    displayName: Enter User Story ID.
    type: string
    default: ''

steps:
- task: UsePythonVersion@0
  inputs:
    versionSpec: '3.x'
    addToPath: true
  
- script: |
    echo "Running p1.py with User Story ID ${{ parameters.UserStory }}"
    export USER_STORY_ID="${{ parameters.UserStory }}"
    python p1.py
  displayName: 'Run p1.py'

Python脚本无需修改,依然通过os.getenv读取环境变量即可。

方法二:直接通过命令行参数传递(更直观)

这种方式不需要依赖环境变量,直接把参数作为命令行参数传给Python脚本:

修改后的YAML配置

trigger:
- main

pool:
  vmImage: 'ubuntu-latest'

parameters:
  - name: UserStory
    displayName: Enter User Story ID.
    type: string
    default: ''

steps:
- task: UsePythonVersion@0
  inputs:
    versionSpec: '3.x'
    addToPath: true
  
- script: |
    echo "Running p1.py with User Story ID ${{ parameters.UserStory }}"
    python p1.py "${{ parameters.UserStory }}"
  displayName: 'Run p1.py'

对应的Python脚本

import sys

print('Hello, world!')
# 读取命令行参数,sys.argv[0]是脚本本身,sys.argv[1]是传入的UserStory值
user_story2 = sys.argv[1] if len(sys.argv) > 1 else None
print(user_story2)

两种方法修改完成后,重新运行构建流水线并输入UserStory ID,就能看到参数值被正确传递并输出了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 14:59:54