Integração Contínua com Jenkins — Grosso Modo

O Jenkins é uma aplicação para CI/CD. Por ser desenvolvido em JAVA existe uma grande comunidade de desenvolvedores que aplicam plugins ao Jenkins, e por isso, ele possui integração com várias ferramentas (Rundeck, Gitlab, Slack…) e isso justifica seu uso de forma tão aceitável para automatizações.

I. Principais caracteristicas:

  1. Trabalha com uma interface gráfica aonde se faz todo o gerenciamento.
  2. Através de plugins é possível aumentar as funcionalidades do Jenkins.
  3. Multiplataforma: Desenvolvido em Java.

4. Integração com SCM’s (Git.. Bitbucket..)

II. Para fazer a instalação usei um PlayBook em Ansible.

Dúvidas de como criar um playbook:

Após a instalação você pode verificar o arquivo que contém todas as informações do Jenkins e é possível constatar que ele trabalha na porta 8080:

Logo após, restarte o serviço:

E acesse sua URL na porta 8080.

Depois que você loga pela primeira vez no Jenkins ele solicita um desbloqueio a sua instância por questão de segurança:

Então você pode usar o cat no arquivo que o Jenkins informa e o SO vai informar o pass inicial:

E você pode apresentar esse valor ao Jenkins para que o desbloqueio possa ser feito:

Logo após o Jenkins irá solicitar sua customização.

É possível instalar os plugins mais utilizados ou selecionar os plugins em uma lista:

Com os plugins instalados o Jenkins solicita o cadastro de um administrador:

Na senha é recomendado que coloque a mesma senha do Gitlab ou Bitbucket para que não se tenha problemas de integração.

E logo depois é possível começar a usar o Jenkins.

Na interface do Jenkins conseguimos visualizar a fila de execução: Build Queue 》

E também o status da execução: Build Executor Status 》

III. Criando uma Job:

De forma bem intuitiva clicamos em “Create New Job” e as opções são apresentadas:

Freestyle project: É possível criar a Job do jeito que você quiser.. podendo por exemplo integrar com um gerenciador de código ou não.. integrar com Slack ou não..

Pipeline: Apresenta em modo gráfico se a execução falhou ou não.

External Job: Quando se chama uma Job que está em um outro local, uma Job externa.

Multi-configuration project: Quando você vai fazer um projeto executando configurações diferentes, executando em ambientes diferentes.. plataformas diferentes.. ou seja, uma Job complexa.

Folder: Quando se cria uma pasta para o projeto, ou seja, você pode ter vários projetos separados por pastas.

GitHub Organization: É possível integrar com seus códigos no GitHub.

Multibranch Pipeline: Que é quando se cria uma Pipeline de acordo com seu SCM ou de acordo com o que o repositório mandar integrando sua regra de negócio.

Para exemplificar criei um Project Freestyle.

Então ele vai solicitar uma descrição do projeto:

Ele também deixa claro que se pode ter algum tipo de integração ou opções avançadas..

E na aba Source Code Management ele da a opção de integrar a Job com algum versionador:

No caso do Git por exemplo é possível selecionar para que seja executado um gitpush após a execução da Job.

E na parte de BUILD “falo” para o Jenkins o que ele vai fazer. Ele pode executar um Script no Windows.. um Script no Linux.. Ant para execuções de Java..

E no POST-BUILD você faz algo com o que foi construído, ou seja, você pode pegar o artefato e jogar em um Nexus por exemplo.

Então apenas para ver o Jenkins funcionando (GROSSO MODO) fiz um BUILD de Shell.

Na aba Build Environment executei o comando:

Logo após salvei e fui redirecionado para dentro da tela do “projeto”. E consigo ver todas as informações da minha Job:

No caso rodei a Job na opção Build Now.

E em Build History você verá que a Job foi executada pela primeira vez com a hash: #1

E clicando no #1 o Jenkins dá todas as informações referentes a Job executada:

Então na opção Console Output é possível ver o que a Job fez:

E na página inicial lá estará a Job com mais algumas informações:

IV. Indicadores de estabilidade:

Funciona como um histórico para indicar como está a frequência de sucesso ou falha. Estes ícones climáticos (rs) estão lá na tela inicial do Jenkins com as principais informações do Job:

V. Conclusão

O Jenkins é um software extensível, o que significa que podemos facilmente adicionar novas funcionalidades para ele através de plugins.

Qualquer pessoa pode desenvolver plugins para o Jenkins, o que torna uma ferramenta com possibilidade de configuração e alteração.