передача IP-адреса в качестве параметра в шаблон скрипта Python - PullRequest
0 голосов
/ 06 июня 2019

У меня есть следующий скрипт на Python с шаблоном конвейера Azure DevOps:

# 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 Ответ

1 голос
/ 06 июня 2019

вы можете использовать только этот синтаксис ${{ 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...