Scripted vs Declarative: Uma comparação detalhada das pipelines do Jenkins  

Uma comparação detalhada das pipelines do Jenkins: Scripted vs Declarative. Descubra as diferenças, vantagens e desafios de cada abordagem para maximizar a eficiência em DevOps.

22 abril, 2024

Neste mundo DevOps em rápida evolução, as pipelines do Jenkins surgem como uma solução inovadora para expressar e automatizar o processo de entrega de software, desde o controle de versão até os usuários finais e clientes.  

Nesse contexto, duas abordagens principais se destacam: as pipelines Scripted e Declarative (declarativas). Ambos têm seus pontos fortes e fracos, então, compreender essas duas abordagens permite maximizar a eficiência em DevOps, garantindo entregas mais ágeis e confiáveis. 

Vem com a gente! 

O que são as pipelines do Jenkins? 

Um Pipeline do Jenkins é um conjunto de plug-ins para criar fluxos de trabalho automatizados que gerenciam desde testes até a implantação de código. Ou seja, as pipelines permitem a automação e a gestão eficiente dos processos de entrega de software.  

Essas pipelines, definidas em arquivos chamados Jenkinsfiles, se dividem em stages e steps, organizando tarefas como “Build”, “Test” e “Deploy”. Além de suportar a execução de tarefas em paralelo, em diferentes nós e containers Docker, as pipelines do Jenkins introduzem conceitos importantes como node, stage, e step para organizar e controlar o fluxo de trabalho.  

Então, essa abordagem “as code” para a criação de pipelines de entrega contínua não só otimiza o processo de desenvolvimento de software, mas também melhora significativamente a colaboração e a qualidade do código ao longo do tempo. 

O que são as pipelines scripted? 

Baseada na linguagem Groovy, a abordagem Scripted, oferece flexibilidade e controle detalhado sobre o fluxo de trabalho, sendo ideal para requisitos complexos de construção ou implantação. Diferentemente das pipelines Declarativas, não exige a quebra de estágios em múltiplos passos, permitindo um manuseio de erros mais granular e mecanismos de recuperação específicos. Contudo, essa liberdade vem com uma complexidade maior, exigindo conhecimento aprofundado em Groovy e Jenkins.  

Vejamos um exemplo simples de um Scripted Pipeline: 


Neste exemplo, cada estágio da pipeline é definido dentro de blocos node e stage, nos quais executamos comandos específicos. Ao contrário da pipeline declarativa, a abordagem Scripted não suporta diretamente a reinicialização de estágios específicos, porém oferece recursos poderosos como retry e timeout, além de permitir ações de limpeza no segmento post. 

Ou seja, a escolha entre Scripted e Declarativa depende do nível de complexidade desejado e da experiência da equipe em Groovy e Jenkins. Enquanto a Scripted oferece um leque amplo de possibilidades para usuários avançados, pode representar um desafio para quem está começando. 

O que são as pipelines declarativas? 

As pipelines declarativas oferecem uma simplicidade revolucionária na criação e manutenção de pipelines no Jenkins, destacando-se por sua sintaxe simplificada e instruções específicas.  

As pipelines declarativas são adequadas para projetos com estruturas simples e padronizadas, pois criam jobs no Jenkins para cada tarefa ou etapa. Baseada na linguagem Groovy, essa pipeline utiliza uma DSL (Domain-Specific Language) para a configuração.

A estrutura dessa pipeline define explicitamente os estágios e as etapas de execução: 

  • Agent (agente): Especifica a execução da pipeline inteira em um container Docker. 
  • Stage e Steps (estágios e passos): Permite a criação de diferentes estágios na pipeline, visualizados como segmentos separados durante a execução. 
  • Pós-execução: Define passos adicionais após a conclusão da pipeline ou estágio. 

Aqui está um exemplo de uma Declarative Pipeline equivalente ao exemplo anterior: 

Assim, como podemos ver, a sintaxe é mais estruturada e legível, facilitando a compreensão da estrutura da pipeline. 

Principais Diferenças entre Scripted e Declarative 


De fato as pipelines Scripted e Declarativas do Jenkins compartilham semelhanças em performance, escalabilidade e flexibilidade, apesar de suas diferenças sintáticas. Isso é reiterado pela documentação do Jenkins, que fornece uma comparação detalhada desses dois tipos de pipelines, destacando que: 

  • Performance de Execução: projetados para oferecer uma execução eficiente, ambos garantem que os processos de integração e entrega contínua sejam rápidos e confiáveis. 
  • Escalabilidade: Scripted e Declarativas permitem que as equipes de DevOps escalem suas pipelines de acordo com as necessidades do projeto, sem comprometer a qualidade ou a eficiência. 
  • Flexibilidade: A capacidade de adaptar e modificar pipelines é crucial em ambientes de DevOps dinâmicos. Tanto as pipelines Scripted quanto as Declarativas oferecem uma flexibilidade considerável, permitindo a personalização para atender a requisitos específicos. 

Dessa forma, essas semelhanças sublinham a importância de escolher a abordagem que melhor se adapta à experiência da equipe e aos requisitos do projeto, em vez de se basear apenas em diferenças técnicas. A documentação do Jenkins é um recurso valioso para entender essas nuances e tomar uma decisão informada. 

Conclusão 

Dentre os pontos abordados, destacamos a relevância da escolha entre os dois tipos baseada nas necessidades específicas do projeto e na capacitação da equipe, enfatizando a importância de compreender profundamente ambas as abordagens para maximizar a eficiência e a eficácia no cenário DevOps

Ao final, fica evidente que, apesar das diferenças marcantes, tanto as Pipelines Scripted quanto as Declarativas desempenham papéis fundamentais na automação e otimização dos processos de integração e entrega contínua.  

Portanto, o entendimento aprofundado dessas pipelines e a escolha consciente entre elas se apresentam como etapas cruciais na jornada rumo à excelência em DevOps. 

Você também pode gostar de:

Compartilhe este artigo

Fale com a Vericode

Precisa de um especialista em criar soluções digitais para sua empresa? Agende um contato de negócios e fale com um Vericoder. Iremos lhe apresentar uma proposta de negócios atraente e de alto impacto.

Contato de negócios

Inscreva-se em nossa newsletter

Newsletter da Vericode sobre assuntos de engenharia de software de alto desempenho, metodologias de QA, testes e transformação digital.

Quero receber conteúdos exclusivos
pt_BRPT