Совместное использование переменных между разными проектами в Azure DevOps

Надеюсь, у вас все хорошо!

Мне нужно задать вопрос по лазурному DevOps, я уже читал документацию, но не нашел способа развеять эти сомнения

У меня есть проекты X, Y и Z, а в проекте X создайте в конвейере ›› Libray группу переменных под названием общие, которыми я хотел бы поделиться с Y и Z конвейеры, при настройке этой группы я включил опцию Разрешить доступ ко всем конвейерам.

В YAML конвейеров Y и Z я сделал следующую конфигурацию: ** переменные:

  • группа: общие **

При запуске конвейера он возвращает запрос авторизации и даже нажимает кнопку авторизации, как показано на рисунке ниже:

Ошибка авторизации печати

There was a resource authorization issue: 
"An error occurred while loading the YAML build pipeline.  
 Variable group was not found or is not authorized for use.  
 For authorization details, refer to https://aka.ms/yamlauthz."

Мой вопрос: есть ли способ поделиться переменными между конвейерами разного назначения, если есть, не могли бы вы прислать мне некоторую документацию, которая может помочь мне настроить это?


person Leandro Moreira    schedule 15.04.2021    source источник
comment
Привет, Леандро, мой ответ работает для экспорта / импорта переменных между проектами? Если да, вы можете принять это как ответ, это может помочь другим членам сообщества, которые сталкиваются с такими же проблемами, и мы могли бы заархивировать эту ветку, спасибо.   -  person Edward Han-MSFT    schedule 18.05.2021


Ответы (2)


Тестирование на моей стороне, и я могу воспроизвести эту проблему, установка параметра Разрешить доступ ко всем конвейерам позволит группе переменных быть доступной для любых конвейеров в текущем проекте, а не между проектами. Это должно быть известное ограничение, и это - это билет обратной связи. Вы можете проголосовать и подписаться на этот тикет. Вы также можете создать новый запрос предложения здесь. Группа продуктов будет регулярно проверять эти заявки и рассматривать их как дорожную карту.

Кроме того, в качестве обходного пути вы можете попробовать добавить эти общие переменные в Azure Key Vault, а затем используйте задача Azure Key Vault, чтобы получить последние значения всех или подмножества секретов из хранилища и установить их как переменные, которые можно использовать в последующих задачах конвейера. . См .: Использовать Azure Подробнее о секретах Key Vault в Azure Pipelines.

person Edward Han-MSFT    schedule 16.04.2021
comment
@ Леандро Морейра: другими словами, это не похоже на группы переменных, которые можно использовать здесь. Альтернативой является экспорт переменных (например, с помощью внешнего файла) и их импорт в соответствующие сценарии YAML. Я предложил выполнить экспорт из скрипта; Эдвард Хан предложил импортировать из Хранилище ключей Azure. - person paulsm4; 16.04.2021
comment
Большое тебе спасибо! Прошу прощения за ошибку при ответе, так как это мой первый пост на stackoveflow. Ваш ответ мне кажется логичным, потому что, когда я вхожу в конвейер переменных ›› Триггер ››, он не появляется в списке групп переменных, переменных из других проектов. Я буду следовать предложению экспортировать / импортировать переменные между проектами. - person Leandro Moreira; 17.04.2021

Эта ссылка дает хороший обзор использования переменных в конвейерах Azure DevOps:

https://docs.microsoft.com/en-us/azure/devops/pipelines/process/variables

В наиболее частом случае вы устанавливаете переменные и используете их в файле YAML.

В файле YAML вы можете установить переменную в различных областях:

  • На корневом уровне, чтобы сделать его доступным для всех заданий в конвейере.
  • На уровне этапа, чтобы сделать его доступным только для определенного этапа.
  • На уровне вакансии, чтобы сделать его доступным только для конкретной работы.

В: Похоже, вы хотели бы совместно использовать переменные между корнями конвейера YAML, верно? В настоящее время вы пытаетесь использовать группы переменных, правильно?

Другим решением было бы чтение вашего конвейера из общего файла. Например:

Есть ли способ прочитать файл из Azure DevOps YAML?

... вы можете использовать любой язык сценариев, который вам нравится, чтобы проанализировать файл и выдать все, что вам нужно в качестве переменной сборки, и использовать ее позже. вот что я делал:

- script: echo "##vso[task.setvariable variable=dp]$(cat $(Build.Repository.LocalPath)/deployment/dp)"
- script: az group delete -n $(dp)-k8s -y --no-wait

Другими словами:

  • Создайте файл с переменными, которые вы хотите экспортировать. Это может быть любой формат скрипта: Powershell, bash и т. Д. И т. Д.

  • Измените конвейер (ы), чтобы прочитать файл и импортировать определения переменных во время выполнения.

  • Есть много способов сделать это. Ссылка SO выше является просто примером.

person paulsm4    schedule 15.04.2021