Задайте переменные среды с ограниченной областью действия для конвейера Jenkins из Jenkins, а не из Jenkinsfile

Есть ли способ хранить неконфиденциальные данные в 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.

0
задан 11 August 2021 в 01:18
1 ответ

Существует почти неограниченное количество способов сделать это. Вот три, которые приходят на ум:

  • Вы можете использовать общую библиотеку Jenkins Pipeline для централизованного хранения значений конфигурации.

  • Вы можете сохранить значение в удаленном файле или репозитории, а ваш конвейер считывает значение из удаленного файла или файла в репозитории.

  • Конвейер может извлекать значение с другого сервера через HTTP REST API.

0
ответ дан 11 August 2021 в 16:30

Теги

Похожие вопросы