Scripted vs Declarative Pipelines do Jenkins: quais são as principais diferenças?
Uma das principais características do Jenkins é o seu suporte para pipelines, que permitem aos programadores criar fluxos de trabalho automatizados para construir, testar e implantar as suas aplicações. Existem dois tipos de pipelines no Jenkins: Scripted e Declarative. Descubra hoje quais as suas principais diferenças.
O que é o Jenkins?
O Jenkins é um servidor de automatização open-source baseado em Java e a sua principal característica é o fornecimento de mais de 1700 plugins que auxiliam na criação, deployment e automatização de projetos. Outra característica peculiar é que o Jenkins foi desenvolvido para CI/CD, conceito que junto com uma cultura DevOps acelera a evolução de softwares.
O que é um Pipeline do Jenkins?
Um Pipeline do Jenkins é um conjunto de plug-ins para criar fluxos de trabalho automatizados e recorrentes que constituem pipelines de CI/CD. Um Pipeline do Jenkins inclui todas as ferramentas necessárias para orquestrar testes, merging, packaging, envio e deployment de código.
Um pipeline é normalmente dividido em vários stages e steps, onde cada step representa uma única tarefa e cada stage agrupa steps semelhantes. Por exemplo, pode ter os stages "Build", "Test" e "Deploy" no seu pipeline.
Mas qual a diferença entre Scripted e Declarative pipelines?
Scripted Pipeline
Um Scripted Pipeline é a sintaxe de pipeline original do Jenkins e é baseada na linguagem de programação Groovy. Num Scripted Pipeline, todo o fluxo de trabalho é definido num único ficheiro chamado Jenkinsfile.
O Jenkinsfile é escrito em Groovy e é executado pelo plug-in "Pipeline" do Jenkins. Um Scripted Pipeline oferece muita flexibilidade e controlo sobre o fluxo de trabalho, mas pode ser mais complexo e detalhado do que um Declarative Pipeline.
Neste exemplo, definimos um pipeline que tem três stages: "Build", "Test" e "Deploy". Cada stage é executado num node do Jenkins e usamos o comando "sh" para executar comandos da shell.
node { stage('Build') { // Build da aplicação sh 'mvn clean install' } stage('Test') { // Correr os testes sh 'mvn test' } stage('Deploy') { // Deploy da aplicação sh 'deploy.sh' } }
Declarative Pipeline
Um Declarative Pipeline é uma adição mais recente ao Jenkins e fornece uma sintaxe mais estruturada e mais simples para definir pipelines. Um Declarative Pipeline também é baseado na linguagem de programação Groovy, mas usa uma DSL (Domain-Specific Language) baseada em Groovy para a configuração do pipeline.
O principal benefício dos Declarative Pipelines é a legibilidade e a facilidade de uso, pois foi projetado para ser mais intuitivo e menos detalhado do que o Scripted Pipeline.
Neste exemplo, definimos um pipeline usando o bloco "pipeline" e especificamos o agent para executar o pipeline em qualquer node disponível. Em seguida, definimos três stages usando o bloco "stages" e usamos o bloco "steps" para definir os steps individuais de cada stage.
pipeline { agent any stages { stage('Build') { steps { // Build da aplicação sh 'mvn clean install' } } stage('Test') { steps { // Correr os testes sh 'mvn test' } } stage('Deploy') { steps { // Deploy da aplicação sh 'deploy.sh' } } } }
Principais diferenças entre Scripted e Declarative Pipelines
Agora que já vimos exemplos de scripted e declarative pipelines, deixamos as principais diferenças entre os dois tipos de pipeline:
- Sintaxe: A sintaxe dos Scripted Pipelines é baseada na linguagem de programação Groovy, enquanto a sintaxe dos Declarative Pipelines também é baseada em Groovy, mas usa um formato mais estruturado e predefinido.
- Flexibilidade: Os Scripted Pipelines oferecem mais flexibilidade e controlo sobre o fluxo de trabalho do pipeline, enquanto os Declarative Pipelines oferecem uma sintaxe mais simples e estruturada.
- Tratamento de erros: Os Scripted Pipelines permitem mecanismos mais granulares de tratamento e recuperação de erros, enquanto os Declarative Pipelines oferecem um mecanismo de tratamento de erros mais simples, intuitivo e fácil de entender.
- Reutilização de código: Os Scripted Pipelines permitem uma maior reutilização e modularidade do código, enquanto os Declarative Pipelines foram concebidos para ser mais autónomos e menos dependentes de scripts e bibliotecas externas.
- Facilidade de leitura: Os Declarative Pipelines foram projetados para ser mais legíveis e fáceis de entender, enquanto os Scripted Pipelnies podem ser mais complexos e detalhados.
No geral, tanto os Scripted como os Declarative Pipelines fornecem uma maneira poderosa e flexível de automatizar a criação, o teste e a implantação de aplicações num ambiente DevOps. A escolha entre os dois tipos de pipeline depende em grande parte das necessidades específicas da equipa de desenvolvimento e de fatores como a flexibilidade, a legibilidade e a facilidade de utilização.
Leia também: