我有以下带有Azure DevOps管道模板的python脚本:
# File: templates/clone-docker-volume.yml
parameters:
sourceVolume: ''
targetVolume: ''
pfaEndpoint: ''
steps:
- task: PythonScript@0
inputs:
scriptSource: 'inline'
script: |
#!/usr/bin/env python3
import urllib3
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
fa = myfunc(target="${{ parameters.pfaEndpoint }}")
当我按预期方式对模板中的脚本的ip地址调用进行硬编码时,当我更改模板以对ip地址进行参数化时,出现以下错误:
HTTPSConnectionPool(host ='$(pfaendpoint)',port = 443)
我正在如下调用模板中的脚本:
- template: templates/python-template.yml
parameters:
pfaEndpoint: '$(pfaEndpoint)'
我怀疑这是导致脚本中使用的IP地址显示为“ $(pfaEndpoint)”的问题。有人可以建议我如何解决此问题,以便将IP地址正确传递到模板中。
答案 0 :(得分:1)
您只能使用该语法${{ parameters.something }}
(如果它是单个“事物”,则不能将其嵌入到字符串中)。为此,您必须使用format
运算符:
script: |
${{ format('#!/usr/bin/env python3
import urllib3
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
fa = myfunc(target="{0}")', parameters.pfaEndpoint) }}
如果您需要2个参数,请使用此参数:
${{ format('{0} {1}', parameters.one, parameters.two) }}
https://docs.microsoft.com/en-us/azure/devops/pipelines/process/expressions?view=azure-devops#format