Я пытаюсь создать конвейер AzOv DevOps для одного из приложений Java, используя maven, и в модульном тесте у меня есть 2 секрета, которым необходимо получить доступ к значению из переменных среды.
String key = System.getenv().get("MY_KEY");
String secret = System.getenv().get("MY_SECRET");
Я добавил 2 значения для переменных конвейера из браузера и пометил их как «Сохранить это значение в секрете», чтобы значения были сохранены в качестве секретного.
В конвейер я добавил обязательные переменные и заменил значение настроенными переменными.
variables:
MY_KEY: $(MY_KEY_VAL)
MY_SECRET: $(MY_SECRET_VAL)
Однако, когда я запускаю конвейер сборки, он завершается неудачно с модульным тестом из-заобнулить значения как ключевых, так и секретных значений.
Как это исправить? Я что-то не так делаю в конфигурациях?
ОБНОВЛЕНИЕ
Как упоминал Бен ниже, невозможно установить переменную среды на размещенных агентах. Чтобы запустить все модульные тесты во время конвейера сборки и при этом сохранить ключ и секрет в безопасности, я изменил модульные тесты, чтобы прочитать ключ и секрет из файла в корневом каталоге проекта. Вместо того, чтобы добавить файл, содержащий ключ и секрет, в git repo, он был добавлен как защищенный файл в библиотеку конвейера и получил разрешение на доступ по конвейеру.
В конвейере я смог загрузить защищенный файл, используяЗадача «DownloadSecureFile».
- task: DownloadSecureFile@1
displayName: Download API secrets
name: configfile
inputs:
secureFile: 'service_api_keys'
Переместил файл в корневой каталог проекта с помощью bash.
- bash: mv $(configfile.secureFilePath) ./
Запустить процесс сборки, который будет читать секреты при выполнении модульного теста.