Azure Pipeline Python任务参数



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

我能够成功地运行内联脚本与此代码&我得到的输出如预期的那样:

1- for print ('Hello ', args.svc) as ('Hello, 'Service_De')

2 -印刷(‘你好’,args.env)("你好,"开发")

- 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任务作为两个参数的组合,脚本给了我一个错误print ('Hello ', args.svc_args.env)

我无法正确格式化python代码。理想情况下,我希望输出为(' hello ','Service_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)

您需要这样做才能获得真正的目录路径参见:从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()
base_dir = Path(__file__).resolve().parent
file_path = os.path.join(base_dir, "group_vars/args.svc.yaml")
with open(file_path) as file:
#value_list = yaml.load(file, Loader=yaml.FullLoader)
value_list = yaml.full_load(file)

最新更新