Могу ли я получить доступ к переменным, установленным как секретные, с помощью 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
}
}
Если мой ответ вам помог, пожалуйста, рассмотрите возможность принять его.
Команда az pipelines variable-group variable update
обновит секретную переменную, но ее значение не будет отображаться по соображениям безопасности — помните, что это конфиденциальная информация, которая не должна отображаться в журналах консоли или конвейера.
Подробнее об аутентификации Azure DevOps CLI см. в разделе Вход с помощью личного токена доступа (PAT).
Рассмотрим следующий конвейер с двумя заданиями:
foo
из группы переменных group1
(ID=14)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:
Значение секретной переменной не будет возвращено ни при каких выводах. Хотя его выходные данные отображаются как нулевые, значение должно было быть обновлено. Вам нужно следовать методу @Rui Jarimba в ответе, чтобы перезагрузить группу переменных в следующих заданиях и использовать обновленное значение переменной группы переменных.