Pplware

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:

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:

Exit mobile version