Establezca variables de entorno con alcance para la canalización de Jenkins desde Jenkins, no desde Jenkinsfile

Establezca variables de entorno con alcance para la canalización de Jenkins desde Jenkins, no desde Jenkinsfile

¿Existe alguna forma de almacenar datos no confidenciales en Jenkins con el ámbito de una configuración de compilación para que puedan leerse desde un script de canalización?

Estamos migrando a un nuevo servidor Octopus Deploy y nuestro archivo Jenkins se ve así:

pipeline {
  environment {
    OCTOPUS_CLI_SERVER = "https://octopus.example.com"
    OCTOPUS_CLI_API_KEY = credentials("Octopus_Deploy_ApiKey")
  }
  // ...
}

Puedo actualizar la clave API de forma centralizada a través del administrador de credenciales de Jenkins, pero tendré que editar y confirmar el cambio en OCTOPUS_CLI_SERVERcada rama, ya que la URL está codificada. Mientras cambie esto, me pregunto si hay una manera mejor que simplemente codificar un nuevo valor.

Ipodríaalmacene la URL del servidor Octopus en el administrador de credenciales y acceda a ella de la misma manera, pero luego su valor se eliminará de los registros, y eso podría resultar molesto. Idealmente, lo que estoy buscando podría tener un valor diferente para múltiples proyectos. Por ejemplo, tanto el Proyecto A como el Proyecto B podrían leer una variable denominada "PUBLIC_DOMAIN", pero uno obtendría "a.example.com" y el otro obtendría "b.example.com".

Menciono Octopus Deploy porque resulta que es el cambio que estamos realizando, pero esta pregunta podría aplicarse a cualquier dato al que se acceda desde una canalización de Jenkins; esto no es específico de Octopus Deploy.

Respuesta1

Hay formas casi ilimitadas de hacer esto. Aquí hay tres que me vienen a la mente:

  • Podrías usar unBiblioteca compartida de Jenkins Pipelinepara almacenar los valores de configuración en una ubicación central.

  • Puede almacenar el valor en un archivo o repositorio remoto y hacer que su canalización lea el valor del archivo remoto o de un archivo en el repositorio.

  • Podría hacer que la canalización obtenga el valor de otro servidor a través de la API REST HTTP.

información relacionada