Azure管道Python任务参数

2024-04-26 07:20:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要在azure管道中执行一个python脚本,并带有额外的命令行参数

我能够使用此代码成功地内联运行脚本&;我得到的输出与预期一致:

1-用于打印('Hello',args.svc)为('Hello',Service_De')

2-用于打印('Hello',args.env)为('Hello',Dev')

- task: PythonScript@0
        inputs:
          scriptSource: inline
          script: |
            import argparse
            parser = argparse.ArgumentParser()
            parser.add_argument("--svc")
            parser.add_argument("--env")
            args = parser.parse_args()
            print ('Hello ', args.svc)
            print ('Hello ', args.env)
          arguments: --svc ${{parameters.service}}_${{parameters.environment}}
                     --env ${{parameters.environment}}

我有两个问题需要帮助:

问题1: 当我分开我的服务和;环境参数和更新我的python任务作为这两个参数的组合,脚本会给我一个错误 打印('Hello',args.svc_args.env)

我无法正确格式化python代码。理想情况下,我希望输出为('Helo','Service\u Dev')

- task: PythonScript@0
        inputs:
          scriptSource: inline
          script: |
            import argparse
            parser = argparse.ArgumentParser()
            parser.add_argument("--svc")
            parser.add_argument("--env")
            args = parser.parse_args()
            print ('Hello ', args.svc_args.env)
          arguments: --svc ${{parameters.service}}
                     --env ${{parameters.environment}}

第2期: 当我使用filepath选项执行相同的工作代码时,它无法执行,并给我一个错误:

IOError:[Errno 2]没有这样的文件或目录:'./group_vars/args.svc.yaml'

- task: PythonScript@0
        inputs:
          scriptSource: 'filePath'
          scriptPath: "$(System.DefaultWorkingDirectory)/modify-config.py"
          arguments: --svc ${{parameters.service}}_${{parameters.environment}}
          #pythonInterpreter: # Optional
          #workingDirectory: # Optional
          #failOnStderr: false # Optional
        displayName: 'Update Config files'

modify-config.py包含以下代码:

#!/usr/bin/python
import os
import yaml
from jinja2 import Template
import argparse

parser = argparse.ArgumentParser()
parser.add_argument("--svc")
#parser.add_argument("--env")
args = parser.parse_args()

with open(r'./group_vars/args.svc.yaml') as file:
  #value_list = yaml.load(file, Loader=yaml.FullLoader)
  value_list = yaml.full_load(file)

Tags: 代码importenv脚本addparseryamlhello