
Existe alguma maneira de armazenar dados não confidenciais no Jenkins com escopo em uma configuração de compilação para que possam ser lidos em um script de pipeline?
Estamos migrando para um novo servidor Octopus Deploy e nosso Jenkinsfile está assim:
pipeline {
environment {
OCTOPUS_CLI_SERVER = "https://octopus.example.com"
OCTOPUS_CLI_API_KEY = credentials("Octopus_Deploy_ApiKey")
}
// ...
}
Posso atualizar a chave da API centralmente por meio do gerenciador de credenciais Jenkins, mas terei que editar e confirmar a alteração em OCTOPUS_CLI_SERVER
cada ramificação, já que o URL é codificado. Enquanto estou mudando isso, estou me perguntando se existe uma maneira melhor do que apenas codificar um novo valor.
EUpoderiaarmazene a URL do servidor Octopus no gerenciador de credenciais e acesse-o da mesma maneira, mas seu valor será ocultado dos logs, e isso pode ser irritante. Idealmente, o que procuro poderia ter um valor diferente para vários projetos. Por exemplo, tanto o Projeto A quanto o Projeto B podem ler uma variável chamada "PUBLIC_DOMAIN", mas um obteria "a.example.com" e o outro obteria "b.example.com".
Estou mencionando o Octopus Deploy porque é a mudança que estamos fazendo, mas esta questão pode se aplicar a qualquer dado acessado de um pipeline Jenkins, isso não é específico do Octopus Deploy.
Responder1
Existem maneiras quase ilimitadas de fazer isso. Aqui estão três que vêm à mente:
Você poderia usar umBiblioteca compartilhada do Jenkins Pipelinepara armazenar valores de configuração em um local central.
Você pode armazenar o valor em um arquivo ou repositório remoto e fazer com que seu pipeline leia o valor do arquivo remoto ou de um arquivo no repositório.
Você poderia fazer com que o pipeline buscasse o valor de outro servidor por meio da API HTTP REST.