Como criar seu primeiro pipeline Jenkins?

Um guia passo a passo para criar o pipeline Jenkins


Por que o Jenkins Pipeline?

Entrega Contínua (CD) é uma parte essencial do Ciclo de Vida do DevOps.

Ele garante que os desenvolvedores de software / aplicativo que estão criando estejam sempre prontos para produção. Para que isso ocorra, sempre que o código for atualizado, ele precisará ser construído, testado e implantado continuamente. É aqui que o Jenkins Pipeline entra em cena..

No DevOps, a integração contínua e a entrega contínua (CI / CD) são alcançadas através do Jenkins Pipeline. O uso do Jenkins Pipeline para CD ajuda a fornecer o software com lançamentos mais rápidos e frequentes. Isso ajuda a incorporar o feedback em cada próximo lançamento.

O que é o Jenkins Pipeline?

O Jenkins Pipeline é uma combinação de tarefas para fornecer software continuamente usando o Jenkins.

Suponho que você saiba o que é Jenkins. Caso contrário, verifique este Curso da Udemy para dominar Jenkins.

Um pipeline Jenkins consiste em vários estados ou estágios, e eles são executados em uma sequência um após o outro. JenkinsFile é um arquivo de texto simples usado para criar um pipeline como código no Jenkins. Ele contém código no DSL (Groovy Domain Specific Language), que é simples de escrever e legível por humanos.

Você pode executar o JenkinsFile separadamente ou também pode executar o código de pipeline na Jenkins Web UI. Há duas maneiras de criar um pipeline usando o Jenkins.

  • Declarativo – uma nova maneira de criar o Jenkins Pipeline. Aqui, você escreve código groovy contendo blocos “pipeline”, que são verificados em um SCM (Source Code Management)
  • Scripted – maneira de escrever código groovy em que o código é definido dentro dos blocos “node”.

Antes de entrarmos na demonstração, se você não instalou o Jenkins, instale-o primeiro. Certifique-se de ter o Jenkins em funcionamento no seu sistema.

Crie um pipeline Jenkins

É assim que um fluxo de pipeline do Jenkins se parece, que consiste em vários estágios entre os desenvolvedores que criam um software (codificação) e o software entregue na produção.

Jenkins Pipeline

Vamos criar um pipeline declarativo.

No painel do Jenkins, clique em Novo item. Em seguida, insira o nome de um item, por exemplo, “Primeiro pipeline” e selecione o projeto “Pipeline”. Depois clique em OK.

Novo item - Jenkins Pipeline

Clique na guia Pipeline, como mostra a imagem abaixo, e coloque seu código JenkinsFile (Groovy Code) aqui.

Código do arquivo

pipeline {
agente qualquer
estágios {
stage (‘Build’) {
passos {
Olá, GeekFlare. Começando a construir o aplicativo.
}
}
stage (‘Test’) {
passos {
input (‘Deseja continuar?’)
}
}
stage (‘Deploy’) {
paralelo {
stage (‘Implantar início’) {
passos {
eco "Iniciar a implantação .."
}
}
stage (‘Implantando agora’) {
agente {
janela de encaixe {
reuseNode true
imagem ‘nginx’
}
}

passos {
eco "Criado no Docker"
}
}
}
}
stage (‘Prod’) {
passos {
eco "App is Prod Ready"
}

}
}
}

Deixe-me explicar os blocos acima.

  • o gasoduto O bloco consiste em todas as instruções para construir, testar e fornecer software. É o componente principal de um pipeline Jenkins.
  • A agente é designado para executar o pipeline em um nó e alocar um espaço de trabalho para o pipeline.
  • UMA etapa é um bloco que possui etapas para criar, testar e implantar o aplicativo. As etapas são usadas para visualizar os processos do Jenkins Pipeline.
  • UMA degrau é uma tarefa única a ser executada, por exemplo, criar um diretório, executar uma imagem do docker, excluir um arquivo etc..

O código Groovy acima, estou usando para o JenkinsFile. Qualquer agente disponível está sendo atribuído ao pipeline. Então, estou definindo o estágio Build e executando uma etapa de eco simples. Depois, defini o estágio Teste, onde a etapa pergunta se você deseja prosseguir ou não. Depois disso, criei um estágio Deploy, que tem mais dois estágios em execução paralelamente. O estágio inicial de implantação possui uma etapa com o comando echo, e a implantação agora possui uma etapa que puxa uma imagem da janela de encaixe do Nginx no nó. Finalmente, há um estágio Prod com uma simples etapa de eco.

O pipeline explicado acima tem etapas que possuem etapas simples para você entender como funciona. Depois de aprender a criar um pipeline, você pode adicionar mais complexidade e criar pipelines complexos também.

Depois de ter o código na guia Pipeline, clique em Aplicar e Salvar. Por fim, clique em Build Now para começar a criar o Jenkins Pipeline que você acabou de criar.

Crie agora

É assim que a interface do usuário será quando o pipeline for executado. Se você seguiu todas as etapas corretamente, sua compilação será bem-sucedida e mostrará uma cor azul para a compilação (nº 27). Se houver erros na compilação, a cor será vermelha (# 27).

Jenkins Build 27

Agora clique na versão 27 e clique em Saída do console para verificar o que exatamente aconteceu no back-end quando foi executado.

Jenkins Build

É assim que a saída parecerá terminar com uma mensagem de SUCESSO.

Saída do console de sucesso

Iniciado pelo usuário geekflare
Executando no nível de durabilidade: MAX_SURVIVABILITY
[Pipeline] Início do Pipeline
Nó [Pipeline]
Executando no Jenkins em / var / lib / jenkins / workspace / First Pipeline
[Pipeline] {
Estágio [Pipeline]
[Pipeline] {(Compilação)
[Pipeline] eco
Olá, GeekFlare. Começando a construir o aplicativo.
[Pipeline]}
[Pipeline] // estágio
Estágio [Pipeline]
[Pipeline] {(Teste)
Entrada [Pipeline]
Você quer prosseguir?
Continuar ou abortar
Aprovado por geekflare
[Pipeline]}
[Pipeline] // estágio
Estágio [Pipeline]
[Pipeline] {(Implantar)
[Pipeline] paralelo
[Pipeline] {(Filial: início da implantação)
[Pipeline] {(Filial: implantando agora)
Estágio [Pipeline]
[Pipeline] {(Implantar início)
Estágio [Pipeline]
[Pipeline] {(Implantando agora)
[Pipeline] getContext
[Pipeline] é Unix
[Pipeline] sh
[Pipeline] eco
Iniciar a implantação ..
[Pipeline]}
+ janela de encaixe inspecione -f. nginx
[Pipeline] // estágio
[Pipeline]}

Erro: Não existe esse objeto: nginx
[Pipeline] é Unix
[Pipeline] sh
+ docker pull nginx
Usando a tag padrão: latest
mais recente: Puxando da biblioteca / nginx
8d691f585fa8: Puxando a camada fs
5b07f4e08ad0: puxando a camada fs
abc291867bca: Puxando a camada fs
abc291867bca: Verificando a soma de verificação
abc291867bca: Download completo
5b07f4e08ad0: Verificando a soma de verificação
5b07f4e08ad0: Download concluído
8d691f585fa8: Verificando a soma de verificação
8d691f585fa8: Download concluído
8d691f585fa8: Puxar completo
5b07f4e08ad0: Puxar concluído
abc291867bca: Puxar concluído
Digest: sha256: 922c815aa4df050d4df476e92daed4231f466acc8ee90e0e774951b0fd7195a4
Status: imagem mais recente baixada para nginx: mais recente
[Pipeline] withDockerContainer
Jenkins não parece estar sendo executado dentro de um contêiner
$ docker run -t -d -u 125: 131 -w "/ var / lib / jenkins / espaço de trabalho / Primeiro pipeline" -v "/ var / lib / jenkins / espaço de trabalho / Primeiro pipeline: / var / lib / jenkins / espaço de trabalho / Primeiro pipeline: rw, z" -v "/ var / lib / jenkins / espaço de trabalho / Primeiro [protegido por email]: / var / lib / jenkins / espaço de trabalho / Primeiro [protegido por email]: rw, z" -e ******** -e ******** -e ******** -e ******** -e ******** – e ******** -e ******** -e ******** -e ******** -e ******** – e ******** -e ******** -e ******** -e ******** -e ******** – e ******** -e ******** -e ******** -e ******** -e ******** – e ******** -e ******** -e ******** nginx cat
$ docker top 3141793b98f315dc90a57d810068b8eedb6f62debafb9040de06635b558f2943 -eo pid, comm
[Pipeline] {
[Pipeline] eco
Criado no Docker
[Pipeline]}
$ docker stop –time = 1 3141793b98f315dc90a57d810068b8eedb6f62debafb9040de06635b558f2943
$ docker rm -f 3141793b98f315dc90a57d810068b8eedb6f62debafb9040de06635b558f2943
[Pipeline] // withDockerContainer
[Pipeline]}
[Pipeline] // estágio
[Pipeline]}
[Pipeline] // paralelo
[Pipeline]}
[Pipeline] // estágio
Estágio [Pipeline]
[Pipeline] {(Prod)
[Pipeline] eco
App is Prod Ready
[Pipeline]}
[Pipeline] // estágio
[Pipeline]}
[Pipeline] // nó
[Pipeline] Fim do Pipeline
Finalizado: SUCCESS

O Jenkins Pipeline acima criou uma imagem do docker do Nginx. Você pode verificar isso executando o comando abaixo. Você pode ver a imagem da janela de encaixe Nginx também está listada.

[protegido por email]: ~ $ docker image ls
TAMANHO CRIADO ID DE IMAGEM DE REPOSITÓRIO
nginx latest 540a289bab6c 2 semanas atrás 126MB
httpd latest 7d85cc3b2d80 2 meses atrás 154MB
redis latest f7302e4ab3a8 há 2 meses 98,2MB
geekflare_mongodb mais recente 095d17727ca0 3 meses atrás 325MB

Conclusão

Espero que isso lhe dê uma idéia de Jenkins pipeline benefícios e como você pode criar um. A descrição acima é uma demonstração simples, e a melhor maneira de aprender é tentando construir tubulações complexas.

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map