Установите переменные среды области действия для конвейера 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-адрес жестко запрограммирован. Пока я меняю это, мне интересно, есть ли лучший способ, чем просто жестко запрограммировать новое значение.

Я мог бы сохранить URL-адрес сервера Octopus в диспетчере учетных данных и получить к нему доступ таким же образом, но тогда его значение будет удалено из журналов, и это может раздражать. В идеале то, что я ищу, может иметь разную ценность для нескольких проектов. Например, и проект A, и проект B могут читать переменную с именем «PUBLIC_DOMAIN», но один получит «a.example.com», а другой — «b.example.com».

Я упоминаю Octopus Deploy, потому что именно это изменение мы вносим, ​​но этот вопрос может относиться к любым данным, доступ к которым осуществляется из конвейера Jenkins, это не относится только к Octopus Deploy.

1 ответ

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

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

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

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

Другие вопросы по тегам