Доступ к секретам переменных Azure из групп переменных в библиотеке с помощью cli в конвейере

Могу ли я получить доступ к переменным, установленным как секретные, с помощью Azure CLI или любого сценария в конвейере?

Мне нужно обновить переменные, но они установлены как секреты, которые не обновляются, но команда устанавливает для них значение null. Итак, мой вопрос: можем ли мы это сделать? если да, то как? Примечание. Я не хочу связывать переменные с хранилищем ключей Azure.

Я пытался обновить группы переменных с помощью команды обновления, но она не обновляла значения переменных, которые установлены как секретные, а вместо этого делала их нулевыми:

Выполнение:

az pipelines variable-group variable update \
  --group-id 261 \
  --name <groupname> \
  --value <value> \
  --organization <orgURL> \
  --project "Test"

Выход:

{
  "Variable": {
    "isSecret": true,
    "value": null
  }
}

Значение секретной переменной не будет возвращено ни при каких выводах. Хотя его выходные данные отображаются как нулевые, значение должно было быть обновлено. Вам нужно следовать методу @Rui Jarimba в ответе, чтобы перезагрузить группу переменных в следующих заданиях и использовать обновленное значение переменной группы переменных.

Kevin Lu-MSFT 28.08.2024 04:20

Если мой ответ вам помог, пожалуйста, рассмотрите возможность принять его.

Rui Jarimba 02.09.2024 11:10
Переменные, типы данных и операторы в Python
Переменные, типы данных и операторы в Python
В Python переменные используются как место для хранения значений. Пример переменной формы:
1
2
69
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Команда az pipelines variable-group variable update обновит секретную переменную, но ее значение не будет отображаться по соображениям безопасности — помните, что это конфиденциальная информация, которая не должна отображаться в журналах консоли или конвейера.

Подробнее об аутентификации Azure DevOps CLI см. в разделе Вход с помощью личного токена доступа (PAT).

Пример конвейера

Рассмотрим следующий конвейер с двумя заданиями:

  • job1 обновляет значение переменной foo из группы переменных group1 (ID=14)
  • job2 ссылается на группу переменных group1 и отображает значение переменной foo
trigger: none

pool:
  vmImage: 'ubuntu-latest'

jobs:
  - job: job1
    steps:
    - checkout: none
    - bash: |
        az pipelines variable-group variable update \
          --group-id 14 \
          --name foo \
          --value 'updated value' \
          --organization 'https://dev.azure.com/myorg/' \
          --project 'myproject'
      displayName: 'Update variable'
      env:
        AZURE_DEVOPS_EXT_PAT: $(System.AccessToken) # ensure token has enough permissions to run the command

  - job: job2
    dependsOn: job1
    variables:
      - group: 'group1'
    steps:
    - checkout: none

    # See https://stackoverflow.com/a/71746562/558486
    # For debugging purposes only, do NOT use it in production
    - bash: |
        echo "MY_SECRET: ${MY_SECRET:0:1} ${MY_SECRET:1:100}"
      displayName: 'Display variable'
      env:
        MY_SECRET: $(foo)

Вывод задачи в job1:

Вывод задачи в job2:

Другие вопросы по теме