menu EXPLORAR
history NOVIDADES

O que é Jenkins

Jenkins é uma ferramenta de automação de código aberto programada nativamente em Java que tem como objetivo facilitar processos de integração contínua e desenvolvimento contínuo (CI/CD) .

A maioria dos produtos baseados em código precisa ser constantemente atualizada para adicionar melhorias e corrigir possíveis erros de programação. Para garantir um produto de qualidade é importante que alguns aspectos sejam revisados ​​antes de atualizar o código que está em operação.

Por exemplo, uma prática comum é que antes de o código ser atualizado e novas funcionalidades serem adicionadas, ele precisa passar por alguns testes. Se não forem aprovados, a atualização não poderá ser incorporada.

Isso ajuda a não atualizar o código até que funcione perfeitamente. Esses procedimentos são chamados de CI/CD e normalmente são São realizados por profissionais chamados DevOps , cujo nome vem do inglês: Development Operations.

Jenkins permite estabelecer todas as etapas pelas quais o código terá que passar antes de poder ser implantado em produção. A primeira fase é a construção onde é gerado um ambiente onde o código pode ser executado e testado.

Normalmente esta etapa de construção é realizada dentro de um contêiner Docker, de forma a executar o programa em ambiente isolado e com as dependências necessárias.

Uma vez construído o ambiente onde o programa pode ser executado, vem a fase de testes . Nesta etapa, são executados testes unitários e de integração para garantir que o código esteja pronto para implantação no servidor de produção.

Finalmente, uma vez aprovados os testes, o código pode ser atualizado com a nova funcionalidade. Como veremos mais adiante, outras etapas podem ser definidas dentro do pipeline do Jenkins, como a revisão do estilo de programação para atendimento aos padrões.

Integração do Jenkins com repositórios em nuvem

Na maioria dos projetos de TI, o Jenkins está sempre integrado a um repositório de controle de versão na nuvem, como Github, Gitlab ou Bitbucket.

Quando trabalhamos com código, é importante controlar as diferentes versões dele usando os chamados sistemas de controle de versão ou VCS (Version Control System). Um dos mais conhecidos é o Github.

Esses sistemas permitem que o código seja dividido no que chamamos de ramificações. As ramificações permitem ramificar o código e trabalhar com diferentes versões dele. Por exemplo, se eu quiser incorporar uma nova funcionalidade ao meu programa, não farei isso na versão de implantação, mas sim em um branch e quando tiver certeza de que tudo está correto então irei juntá-lo ao branch master, onde está o código que será carregado no servidor de produção.

É aqui que entra o papel de Jenkins. É neste ponto, quando quisermos unir a nossa funcionalidade dentro do nosso branch com o código principal que Jenkins se encarregará de verificar se o código que desenvolvi é adequado para colocar em produção.

Neste ponto, o pipeline Jenkins será executado. Se as diferentes etapas ou estágios do pipeline falharem, o novo código terá que ser revisado novamente antes de poder ser unido ao código principal para atualização.

O que é um pipeline no Jenkins?

O pipeline é o conjunto de etapas definidas pelas quais o código terá que passar antes de poder ser enviado ao servidor de produção. Como mencionamos brevemente antes, existem três fases ou estágios básicos. São eles: construir, testar e implantar.

  1. Construir : O ambiente é preparado com as dependências e variáveis ​​de ambiente necessárias para a execução efetiva do código. Normalmente é executado em um contêiner Docker.
  2. Teste : neste ponto o código é executado dentro do container e são aprovados os diversos testes unitários e de integração que garantem boa funcionalidade e qualidade do código.
  3. Implantar - A nova funcionalidade é mesclada com o código principal e implantada na produção.

Como criar o pipeline Jenkins

Existem várias maneiras de especificar as diferentes etapas do processo de integração contínua. Com Jenkins podemos fazer isso através da UI que ele nos fornece ou criá-lo diretamente em um arquivo chamado Jenkinsfile.

O mais comum é utilizar o Jenkinsfile para especificar cada uma das etapas e condições que deverão ser executadas dentro do fluxo de trabalho.

Abaixo você pode ver um exemplo de como um pipeline seria definido dentro do Jenkinsfile:

O primeiro bloco deve sempre começar com o comando pipeline. Se for escrito fora do bloco, sempre aparecerá um erro, pois não podemos definir a lógica fora do bloco pipeline.

Após o pipeline, vemos a instrução do agente. O agente informa ao Jenkins onde será executada cada fase da integração contínua. Vemos o primeiro agente que não diz nada. Isso significa que todos os agentes serão executados no mesmo local.

A seguir vemos etapas que incorporam as diferentes etapas ou etapas que ocorrerão. Dentro de cada etapa temos etapas diferentes. Os passos são as diferentes instruções que devemos dar ao Jenkins para que ele conclua a etapa de forma satisfatória.

Importante: O bloco de etapas é exclusivo para cada estágio. Não podemos definir mais de um.

Há outro comando importante que podemos definir no pipeline Jenkinsfile chamado post. Na postagem colocaremos as instruções necessárias que devem ser executadas após a execução do pipeline Jenkins.

Normalmente é usado para limpar e excluir dados de arquivos ou bancos de dados que não nos interessam mais.

O que vimos agora é simplesmente um resumo de quais pipelines existem no Jenkins. Porém, para executar esses fluxos de trabalho com eficácia, é necessário mais conhecimento e consulta de manuais passo a passo sobre como realizar cada uma das etapas.

Vantagens de usar Jenkins para CI/CD

Jenkins tem muitas vantagens e por isso é uma das ferramentas de integração contínua mais utilizadas no setor de desenvolvimento e programação:

  • Jenkins é de código aberto e apoiado por uma grande comunidade de desenvolvedores.
  • É uma ferramenta muito versátil graças ao grande número de integrações e plugins que foram projetados para ampliar sua funcionalidade.
  • Por ser de código aberto, é uma ferramenta totalmente gratuita.