将IP地址作为参数传递给python脚本模板

时间:2019-06-06 12:15:14

标签: azure-devops

我有以下带有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地址正确传递到模板中。

1 个答案:

答案 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