Секретные переменные конвейера Azure не работают на триггерах PR - PullRequest
0 голосов
/ 25 июня 2019

У меня есть лазурные конвейеры с секретной переменной, которая срабатывает при запросах Pull.При запуске секретная переменная недоступна для конвейера.

Секретная переменная работает, когда инициируется фиксацией в ветке.

конвейер

pr:
  branches:
    include:
    - '*'
trigger:
  branches:
    exclude:
    - '*'

jobs:
- job:
  pool:
    vmImage: 'ubuntu-latest'
  timeoutInMinutes: 360
  displayName: 'Running test'
  steps:
  - bash: |
      if [ -z "$(system.pullRequest.sourceRepositoryUri)" ]
      then
        python3 runTest.py \
          --config "blessedImageConfig-temp.json" \
          --code $(SecretCode)
      else
        python3 runTest.py \
          --config "blessedImageConfig-temp.json" \
          --pullRepo $(system.pullRequest.sourceRepositoryUri) \
          --pullId $(system.pullRequest.pullRequestNumber) \
          --code $(SecretCode)
      fi

Секретная переменнаядобавлено через webUI

вывод и ошибка

Generating script.
========================== Starting Command Output ===========================
[command]/bin/bash --noprofile --norc /home/vsts/work/_temp/95f6ae7c-d2e1-4ebd-891c-2d998eb4b1d9.sh
/home/vsts/work/_temp/95f6ae7c-d2e1-4ebd-891c-2d998eb4b1d9.sh: line 7: SecretCode: command not found
usage: runTest.py [-h] [--config CONFIG] [--code CODE] [--pullId PULLID]
                  [--pullRepo PULLREPO]
runTest.py: error: argument --code: expected one argument
##[error]Bash exited with code '2'.

1 Ответ

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

SecretCode: команда не найдена

Эта ошибка вызвана ее секретной переменной и передана в командной строке с неверным путем.

Вы можете почувствоватьзапутался по этому поводу.Но, на самом деле, Microsoft когда-либо предупреждает об этом с помощью doc : Никогда не передавайте секреты в командной строке. Это сделано специально.

Я когда-либо сталкивался с подобной проблемой намой докерЯ решил это с отображением значения переменной секретов в переменную окружения, которое также упоминалось в документе Переменная .

Для вашей задачи Bash также имеетсярешение о секретной переменной: Используйте ввод переменных окружения для передачи секретных переменных в этот скрипт 'и установите targetType == Требуется встроенное .

Итак, вы можете добавить приведенный ниже скрипт в ваш Сценарий задачи Bash , чтобы отобразить секретную переменную в переменную среды:

inputs:
    targetType: 'inline'
    - script: 
      echo $code 
      env: 
        code: $(SecretCode)
...