Управление группами переменных
Azure DevOps Services | Azure DevOps Server 2022 — Azure DevOps Server 2019
В этой статье объясняется, как создавать и использовать группы переменных в Azure Pipelines. Группы переменных хранят значения и секреты, которые можно передать в конвейер YAML или сделать доступными для нескольких конвейеров в проекте.
Секретные переменные в группах переменных защищены ресурсами. Можно добавить сочетания утверждений, проверок и разрешений конвейера, чтобы ограничить доступ к секретным переменным в группе переменных. Доступ к несекретным переменным не ограничен утверждениями, проверками или разрешениями конвейера.
Группы переменных соответствуют модели безопасности библиотеки для ролей и разрешений.
Создание группы переменных
Группы переменных для конвейера можно создать в проекте.
Примечание.
Чтобы создать группу секретных переменных для связывания секретов из хранилища ключей Azure в качестве переменных, следуйте инструкциям по ссылке секретов из хранилища ключей Azure.
Вы можете создать группу переменных в пользовательском интерфейсе Azure Pipelines.
Необходимые компоненты
Организация и проект Azure DevOps, где у вас есть разрешения на создание конвейеров и переменных.
Создание группы переменных
В проекте Azure DevOps выберите библиотеку Pipelines>в меню слева.
На странице Библиотека выберите + Группа переменных.
На странице новой группы переменных в разделе "Свойства" введите имя и необязательное описание для группы переменных.
В разделе "Переменные" выберите + Добавить, а затем введите имя и значение переменной для включения в группу. Если вы хотите зашифровать и безопасно сохранить значение, щелкните значок блокировки рядом с переменной.
Нажмите кнопку +Добавить, чтобы добавить каждую новую переменную. После завершения добавления переменных нажмите кнопку "Сохранить".
Теперь эту группу переменных можно использовать в конвейерах проекта.
Связывание секретов из Azure Key Vault
Вы можете создать группу переменных, которая связывается с существующим хранилищем ключей Azure и сопоставить выбранные секреты Key Vault с группой переменных. Только имена секретов сопоставляются с группой переменных, а не значениями секретов. Конвейер запускает, который связывается с группой переменных, извлекает последние значения секретов из хранилища.
Все изменения, внесенные в существующие секреты в хранилище ключей, автоматически доступны для всех конвейеров, использующих группу переменных. Однако если секреты добавляются или удаляются из хранилища, связанные группы переменных не обновляются автоматически. Необходимо явно обновить секреты для включения в группу переменных.
Хотя Key Vault поддерживает хранение и управление криптографическими ключами и сертификатами в Azure, интеграция группы переменных Azure Pipelines поддерживает только сопоставление секретов хранилища ключей. Криптографические ключи и сертификаты не поддерживаются.
Примечание.
Хранилища ключей, использующие управление доступом на основе ролей Azure (Azure RBAC), не поддерживаются.
Необходимые компоненты
- Хранилище ключей Azure, содержащее свои секреты. Хранилище ключей можно создать с помощью портал Azure.
- Подключение службы Azure для проекта.
Создание группы переменных
- В проекте Azure DevOps выберите группу "Библиотека> конвейеров>+ переменная".
- На странице групп переменных введите имя и необязательное описание для группы переменных.
- Включите секреты ссылки из хранилища ключей Azure в качестве переключателя переменных.
- Выберите конечную точку подписки Azure и имя хранилища ключей.
- Включите Azure DevOps для доступа к хранилищу ключей, выбрав "Авторизовать " рядом с именем хранилища.
- На экране "Выбор секретов" выберите определенные секреты из хранилища для сопоставления с этой группой переменных и нажмите кнопку "ОК".
- Нажмите кнопку "Сохранить", чтобы сохранить группу секретных переменных.
Примечание.
Подключение к службе Azure должно иметь по крайней мере разрешения на получение и перечисление в хранилище ключей, которое можно авторизовать на предыдущих шагах. Вы также можете предоставить эти разрешения из портал Azure, выполнив следующие действия.
- Откройте параметры для хранилища ключей и выберите " Перейти к конфигурации>Access" для политик доступа.
- На странице политик доступа, если проект Azure Pipelines не указан в разделе "Приложения" с разрешениями "Получить" и "Список", нажмите кнопку "Создать".
- В разделе "Секретные разрешения" выберите "Получить" и "Список", а затем нажмите кнопку "Далее".
- Выберите субъект-службу и нажмите кнопку "Далее".
- Снова нажмите кнопку "Далее ", просмотрите параметры и нажмите кнопку "Создать".
Дополнительные сведения см. в разделе "Использование секретов Azure Key Vault".
Обновление групп переменных
Группы переменных можно обновить с помощью пользовательского интерфейса Azure Pipelines.
- В проекте Azure DevOps выберите библиотеку Pipelines>в меню слева.
- На странице библиотеки выберите группу переменных, которую вы хотите обновить. Вы также можете наведите указатель мыши на список групп переменных, выберите значок "Дополнительные параметры " и выберите " Изменить " в меню.
- На странице группы переменных измените любой из свойств и нажмите кнопку "Сохранить".
Удаление группы переменных
Группы переменных можно удалить в пользовательском интерфейсе Azure Pipelines.
- В проекте Azure DevOps выберите библиотеку Pipelines>в меню слева.
- На странице библиотеки наведите указатель мыши на группу переменных, которую вы хотите удалить, и выберите значок "Дополнительные параметры".
- Выберите "Удалить" в меню и нажмите кнопку "Удалить" на экране подтверждения.
Управление переменными в группах переменных
Вы можете изменять, добавлять или удалять переменные в группах переменных с помощью пользовательского интерфейса Azure Pipelines.
- В проекте Azure DevOps выберите библиотеку Pipelines>в меню слева.
- На странице библиотеки выберите группу переменных, которую вы хотите обновить. Вы также можете наведите указатель мыши на список групп переменных, выберите значок "Дополнительные параметры " и выберите " Изменить " в меню.
- На странице группы переменных можно:
- Измените любое из имен или значений переменной.
- Удалите любые переменные, выбрав значок мусора рядом с именем переменной.
- Измените переменные на секретные или несекретные, выбрав значок блокировки рядом со значением переменной.
- Добавьте новые переменные, нажав кнопку +Добавить.
- После внесения изменений нажмите кнопку "Сохранить".
Использование групп переменных в конвейерах
Группы переменных можно использовать в yamL или классических конвейерах. Изменения, внесенные в группу переменных, автоматически доступны для всех определений или этапов, с которыми связана группа переменных.
Использование групп переменных в конвейерах YAML
После авторизации конвейера YAML для использования группы переменных можно использовать в конвейере группу переменных или переменные.
Авторизация конвейера YAML для использования группы переменных
Если вы назовете только группу переменных в конвейерах YAML, любой пользователь, который может отправить код в репозиторий, может извлечь содержимое секретов в группе переменных. Таким образом, чтобы использовать группу переменных с конвейерами YAML, необходимо авторизовать конвейер для использования группы. Классические конвейеры могут использовать группы переменных без отдельной авторизации.
Конвейеры можно авторизовать для использования групп переменных с помощью пользовательского интерфейса Azure Pipelines.
- В проекте Azure DevOps выберите библиотеку Pipelines>в меню слева.
- На странице библиотеки выберите группу переменных, которую требуется авторизовать.
- На странице группы переменных перейдите на вкладку "Разрешения конвейера ".
- На экране разрешений конвейера выберите + и выберите конвейер для авторизации. Или щелкните значок "Дополнительные действия", выберите "Открыть доступ" и снова выберите "Открыть доступ", чтобы подтвердить.
Выбор конвейера разрешает этот конвейер использовать группу переменных. Чтобы авторизовать другой конвейер, снова выберите + значок. При выборе "Открыть доступ" все конвейеры проектов разрешаются использовать группу переменных. Открытый доступ может быть хорошим вариантом, если у вас нет секретов в группе.
Еще одним способом авторизации группы переменных является выбор конвейера, нажатие кнопки "Изменить", а затем очередь сборки вручную. Вы увидите ошибку авторизации ресурса и можете явно добавить конвейер в качестве авторизованного пользователя группы переменных.
Использование группы переменных в конвейере YAML
Чтобы использовать переменную из группы переменных, добавьте ссылку на имя группы в файле конвейера YAML. Затем можно использовать переменные из группы переменных в файле.
variables:
- group: my-variable-group
Вы можете ссылаться на несколько групп переменных в одном конвейере. Если несколько групп переменных включают одну и ту же переменную, последняя группа переменных, использующая переменную в файле, задает значение переменной. Дополнительные сведения о приоритете переменных см. в разделе "Расширение переменных".
Вы также можете ссылаться на группу переменных в шаблоне. Следующий файл шаблона variables.yml ссылается на группу my-variable-group
переменных. Группа переменных содержит переменную с именем myhello
.
variables:
- group: my-variable-group
Конвейер YAML ссылается на шаблон variables.yml и использует переменную $(myhello)
из группы my-variable-group
переменных.
stages:
- stage: MyStage
variables:
- template: variables.yml
jobs:
- job: Test
steps:
- script: echo $(myhello)
Использование переменных переменных в конвейерах YAML
Вы обращаетесь к значениям переменных в связанной группе переменных так же, как и к переменным, заданным в конвейере. Например, чтобы получить доступ к значению переменной, именованной customer
в группе переменных, связанной с конвейером, можно использовать $(customer)
в параметре задачи или скрипте.
Если в файле конвейера используются как автономные переменные, так и группы переменных, используйте name
-value
синтаксис для автономных переменных.
variables:
- group: my-variable-group
- name: my-standalone-variable
value: 'my-standalone-variable-value'
Чтобы ссылаться на переменную в группе переменных, можно использовать синтаксис макросов или выражение среды выполнения. В следующих примерах группа my-variable-group
имеет переменную с именем myhello
.
Чтобы использовать выражение среды выполнения, выполните приведенные действия.
variables:
- group: my-variable-group
- name: my-passed-variable
value: $[variables.myhello]
- script: echo $(my-passed-variable)
Чтобы использовать синтаксис макроса, выполните следующее:
variables:
- group: my-variable-group
steps:
- script: echo $(myhello)
Доступ к секретным переменным, включая зашифрованные переменные и переменные хранилища ключей, нельзя получить непосредственно в скриптах. Эти переменные необходимо передать в качестве аргументов в задачу. Дополнительные сведения см. в разделе "Секретные переменные".
Использование групп переменных в классических конвейерах
Классические конвейеры могут использовать группы переменных без отдельной авторизации. Чтобы использовать группу переменных, выполните приведенные действия.
Откройте классический конвейер.
Выберите группы переменных переменных и выберите "Связать группу переменных>".
В конвейере сборки отображается список доступных групп. Связывание группы переменных с конвейером. Все переменные в группе доступны для использования в конвейере.
В конвейере выпуска также отображается раскрывающийся список этапов конвейера. Свяжите группу переменных с самим конвейером или с одной или несколькими конкретными этапами конвейера выпуска. Если вы связываетесь с одной или несколькими этапами, переменные из группы переменных относятся к этим этапам и недоступны на других этапах выпуска.
При установке переменной с одинаковым именем в нескольких областях используется следующая приоритетность:
- Переменная, заданная во время очереди.
- Переменная, заданная в конвейере
- Переменная, заданная в группе переменных
Дополнительные сведения о приоритете переменных см. в разделе "Расширение переменных".
Примечание.
Переменные в разных группах, связанных с конвейером в одной области (например, задание или этап), будут сталкиваться, и результат может быть непредсказуемым. Убедитесь, что для переменных во всех группах переменных используются разные имена.