Featured image of post Entendendo os tipos de jobs

Entendendo os tipos de jobs

Criando um Job no Jenkins

Introdução

Vamos entender os principais tipos de jobs existentes e vamos criar um pipeline básico de build de aplicação.

Setup Ambiente

Você pode utilizar meu repositório com o setup criado até agora com algumas melhorias.

Execute o comando ./run.sh dentro da pasta 01_jenkins

Cenário

Como exemplo, vamos usar o Spring Boot Pet Clinic para demonstrar como criar um pipeline que simplesmente irá realizar o checkout do código e compilar.

Tools no Jenkins

Se você fosse realizar essa atividade no terminal de comando, você faria a seguinte sequência:

1
2
3
git clone https://github.com/spring-projects/spring-petclinic.git
cd spring-petclinic
mvn clean package

Você precisa do git para checkout da aplicação, o maven para compilar, e como é uma aplicação é em Java, precisa de uma jdk para compilar.

Para o Jenkins, todos estes itens são tratados como ferramentas. As configurações estão localizadas em Jenkins > Gerenciar Jenkins > Global Tool Configuration.

Global Tools Configuration Global Tools Configuration Global Tools Configuration

Utilizando o Global Tool Configuration do Jenkins proporciona um nível de flexibilidade para a instalação de várias ferramentas, além de padronizá-las entre as máquinas executoras do jenkins.

Os Tipos de Jobs

Os existem vários jobs no jenkins uma instalação padrão contém os seguintes jobs:

Jobs

  • Freestyle: Este é o modelo de job mais antigo do jenkins. Ele é o modo “low code” para criação de jobs.
  • Pipeline: Tipo de job para execuções mais complexas, onde precisa de um nível de flexibilidade maior que o Freestyle. Neste tipo de job, os processos dos jobs são tratados como código, seguindo o princípio Pipeline as Code. Ainda há duas subdivisões no modo de desenvolvimento do Pipeline: temos o Declarative Pipeline e o Scripted Pipeline. Enquanto no primeiro você está limitado a uma estrutura pré-defininda, no segundo você pode utilizar de todas as funcionalidades da linguagem de programação Groovy. Mais detalhes em https://www.jenkins.io/doc/book/pipeline/syntax/#compare
  • Múltiplas Configurações: É um job Freestyle com um mecanismo para executar várias vezes de acordo com parametrizações. Por exemplo: Imagine que você precise fazer um job que irá testar em um ambiente Linux e um ambiente Windows os browsers Firefox e Chrome. Você parametriza no job os ambientes (Linux, Windows), os browsers (Firefox e Chrome) e o Jenkins fará a combinação de todas as possibilidades para executar o job (Linux-Chrome, Linux-Firefox, Windows-Chorme, Windows-Firefox)
  • Folder: Tipo especial de job para organização de Jobs em uma estrutura de Pastas.
  • Github Organization: Realiza um scan no seu repositório a partir de alguns critérios para executar um job padrão.
  • Multibranch Pipeline: Realiza um scan em um repositório e o jenkins gera automaticamente um job para cada branch encontrada.

Criando um pipeline

Selecione Novo Job, digite o nome do job e clique em pipeline e depois em Salvar:

Jobs

Dentro da seção Pipeline, cole o seguinte código:

 1pipeline{
 2    agent any
 3    stages {
 4        stage('SCM Ckeckout'){
 5            steps{
 6                checkout([
 7                    $class: 'GitSCM', 
 8                    branches: [[name: "*/main"]], 
 9                    doGenerateSubmoduleConfigurations: false, 
10                    extensions: [], 
11                    submoduleCfg: [], 
12                    userRemoteConfigs: [[
13                        url: "https://github.com/spring-projects/spring-petclinic.git"
14                    ]]
15                ])
16            }
17        }
18        stage('Build'){
19            steps{
20				withMaven(
21                globalMavenSettingsConfig: "mavenDefaultConfig", 
22                jdk: 'openjdk9', 
23                maven: 'maven3', 
24                mavenLocalRepo: "/usr/share/maven/.m2",
25                options:     [artifactsPublisher(disabled: true)]) {
26					sh "mvn clean package"
27                }
28            }
29        }
30    }
31}

Jobs

Ao clicar em Construir agora o job será executado.

Jobs Jobs

Explicando cada linha, temos:

  • A linha 1 define que estamos codificando um pipeline declarativo. Sendo assim, existe uma estrutura básica a ser seguida;
  • A linha 2* define que iremos executar este pipeline em qualquer máquina disponível (agent any). Um agent é qualquer máquina reconhecida pelo jenkins para executar os jobs;
  • A linha 3 define o bloco de stages e na linha 4 já declaramos o primeiro stage chamado “SCM Checkout”. Em seguida, a linha 5 contém o bloco steps. Somente após seguir esta estrutura podemos realmente informar o que desejamos automatizar;
  • As linhas 6 a 15 definem o comando checkout. Nele contém informações como por exemplo o tipo do repositório, a url do repositório e a branch. Particularmente, prefiro este comando ao invés do git pela quantidade de funcionalidades disponíveis;
  • As linhas 18 e 19 definem um novo bloco de stage chamado “Build”;
  • As linhas 20 a 25 definem todas as configurações do maven que iremos utilizar: Utilizar os settings chamado mavenDefaultConfig, informando a referencia da ferramenta instalada openjdk9 como a jdk a ser executada e com a versão do maven definida na ferramenta chamada maven3. Aqui ainda informamos aonde está localizado o diretório .m2 do maven e que ao executar o comando, quero ignorar a geração do fingerprint.
  • Finalmente, na linha 26 executamos o maven (mvn clean package) utilizando o comando sh;

Usando o Snippet generator

Você não precisa saber todos esses comandos de cabeça, uma funcionalidade do jenkins é poder construir esses trechos de código em formato wizard. Para isto, utilizamos o link Pipeline Syntax

Jobs Você pode selecionar no combo sample step o comando desejado e preencher com as informações necessárias. Ao clicar no botão Generate Pipeline Script ele irá gerar toda a linha de código necessária:

Jobs Jobs

Finalização

Tentei mostrar todos os “caminhos” que aprendi ao longo do tempo sobre como aprender a criar pipelines no Jenkins. Como toda a adaptação, a documentação no começo vai parecer confusa e com certeza, algumas partes faltam documentação. Porém, as necessidades principais estão bem estruturadas no site oficial.

Por enquanto, nosso job só faz o checkout e o build. Nos próximos artigos vamos realizar incrementos para montar uma estrutura automatizada de build completa.

Abraços


Photo by Markus Spiske on Unsplash

comments powered by Disqus
Criado com Hugo
Tema Stack desenvolvido por Jimmy