Установите переменные среды области действия для конвейера Jenkins из Jenkins, а не из файла Jenkins.
Существует ли какой-либо способ хранения неконфиденциальных данных в Jenkins, привязанных к конфигурации сборки, чтобы их можно было прочитать из сценария конвейера?
Мы переходим на новый сервер Octopus Deploy, и наш файл Jenkins выглядит следующим образом:
pipeline {
environment {
OCTOPUS_CLI_SERVER = "https://octopus.example.com"
OCTOPUS_CLI_API_KEY = credentials("Octopus_Deploy_ApiKey")
}
// ...
}
Я могу обновить ключ API централизованно через диспетчер учетных данных Jenkins, но мне придется отредактировать и внести изменения в
Я мог бы сохранить URL-адрес сервера Octopus в диспетчере учетных данных и получить к нему доступ таким же образом, но тогда его значение будет удалено из журналов, и это может раздражать. В идеале то, что я ищу, может иметь разную ценность для нескольких проектов. Например, и проект A, и проект B могут читать переменную с именем «PUBLIC_DOMAIN», но один получит «a.example.com», а другой — «b.example.com».
Я упоминаю Octopus Deploy, потому что именно это изменение мы вносим, но этот вопрос может относиться к любым данным, доступ к которым осуществляется из конвейера Jenkins, это не относится только к Octopus Deploy.
1 ответ
Есть почти неограниченное количество способов сделать это. Вот три, которые приходят на ум:
Вы можете использовать общую библиотеку Jenkins Pipeline для хранения значений конфигурации в центральном расположении.
Вы можете сохранить значение в удаленном файле или репозитории, а ваш конвейер считывает значение из удаленного файла или файла в репозитории.
Вы можете заставить конвейер получать значение с другого сервера через HTTP REST API.