Установите переменные окружения области видимости для конвейера Jenkins из Jenkins, а не из Jenkinsfile

Установите переменные окружения области видимости для конвейера Jenkins из Jenkins, а не из Jenkinsfile

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

Связанный контент