
Есть ли какой-либо способ хранения неконфиденциальных данных в Jenkins, привязанных к конфигурации сборки, чтобы их можно было прочитать из скрипта конвейера?
Мы переходим на новый сервер Octopus Deploy, и наш Jenkinsfile выглядит следующим образом:
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.
решение1
Есть почти неограниченное количество способов сделать это. Вот три, которые приходят на ум:
Вы могли бы использоватьОбщая библиотека Jenkins Pipelineдля хранения значений конфигурации в централизованном месте.
Вы можете сохранить значение в удаленном файле или репозитории и заставить свой конвейер считывать значение из удаленного файла или файла в репозитории.
Вы можете заставить конвейер извлекать значение с другого сервера через HTTP REST API.