Ao trabalhar em Jenkins, você pode encontrar alguns trabalhos que levam muito tempo para serem executados, levando a um intensivo uso de recursos e impacto no desempenho no servidor.
No entanto, Jenkins nos permite definir um tempo limite de construção para especificar quanto tempo uma compilação deve ser executada antes de ser encerrada automaticamente. Nesse caso, um tempo limite de construção é útil quando você tem construções de longa duração que podem ficar presas ou congeladas por algum motivo.
Neste tutorial, exporemos como configurar um tempo limite de construção em Jenkins.
Exemplo de pipeline
Para ilustrar melhor quando e como usar a opção de tempo limite em Jenkins, pegue um amostra de amostra como mostrado abaixo:
Pipeline
agente qualquer
estágios
estágio ('input')
passos
roteiro
def userInput = mensagem de entrada: 'Por favor, digite um valor:', parâmetros: [string (defaultValue: 'Valor padrão', descrição: 'digite um valor', nome: 'inputValue')]
eco "Entrada do usuário: $ userInput"
Nesse caso, o pipeline tem um único estágio chamado “Entrada“, Que contém uma única etapa que leva ao usuário para entrada.
O "entrada”A etapa exibe uma mensagem para o usuário e espera que o usuário insira um valor. O valor que o usuário entra é armazenado no “UserInput" variável. Finalmente, imprimimos a mensagem de entrada no console usando o comando echo.
Uma vez configurado, construa o oleoduto e veja o que acontece.
Se não fornecermos entrada no pipeline acima, o pipeline esperará indefinidamente para você inserir um valor. Isso ocorre porque o “entrada”A etapa está bloqueando, o que significa que o pipeline não continuará para a próxima etapa até que o usuário forneça entrada.
Para superar isso, podemos configurar um valor de tempo limite que rescindirá automaticamente a construção após uma determinada duração.
O script de exemplo mostra como podemos usar o recurso Jenkins Timeout para terminar a construção após 10 segundos.
Pipeline
agente qualquer
estágios
estágio ('input')
passos
Timeout (Hora: 10, Unidade: 'Segundos')
roteiro
def userInput = mensagem de entrada: 'Por favor, digite um valor:', parâmetros: [string (defaultValue: 'Valor padrão', descrição: 'digite um valor', nome: 'inputValue')]
eco "Entrada do usuário: $ userInput"
O "tempo esgotado”A etapa permitirá o“entrada”Passo para correr por 10 segundos antes de chegar ao tempo. Se o usuário não fornecer entrada dentro do tempo especificado, o término da construção ou mova -se para a próxima etapa.
Jenkins forçará a compilação a terminar, mesmo que haja ações aninhadas após o tempo limite ter decorrido.
Conclusão
Neste artigo, aprendemos sobre o recurso Jenkins Timeout e como usá -lo para especificar a quantidade máxima de tempo para uma compilação executar. Vimos como definir um tempo limite de construção usando o “tempo esgotado”Comando em um script de construção.
No geral, o recurso de tempo limite de Jenkins é uma ferramenta valiosa para impedir que as construções de longa duração fiquem presas ou congeladas e garantam que as construções não consumam recursos excessivos. Isso pode ajudar a garantir que sua instância de Jenkins funcione de maneira suave e eficiente.