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