Como Criar um Pipeline Jenkins CI/CD

Você sabia que o Jenkins possui suporte integrado para CI/CD (Integração Contínua/Entrega Contínua)? Implementar um pipeline de CI/CD do Jenkins com o seu projeto pode melhorar significativamente o seu processo de desenvolvimento de software.

O Jenkins é uma das ferramentas de automação de DevOps mais populares até hoje. E se você está procurando começar com o pipeline de CI/CD do Jenkins, você veio ao lugar certo.

Continue lendo e, neste tutorial, você aprenderá como configurar um pipeline de CI/CD do Jenkins com o GitHub.

Pré-requisitos

Este tutorial pressupõe que você tenha os seguintes requisitos para acompanhar os exemplos.

Você já deve ter uma instalação do Jenkins. Os exemplos deste tutorial utilizarão o Jenkins v2.319.1 em um computador com Windows 10 20H2.

  • O console web do Jenkins deve ser acessível pela internet.
  • A Github account to which you’ll connect with the Jenkins CI CD pipeline.
  • Git SCM. Este tutorial usa a versão mais recente (2.34.1) de 64 bits do Git para Windows.

Preparando o Repositório do GitHub

Este tutorial envolve a integração de um pipeline de CI/CD do Jenkins com um repositório do GitHub. Em vez de criar um projeto em branco, fazer um fork de um repositório existente é mais rápido para começar.

1. Primeiro, abra um navegador e faça login na sua conta do GitHub.

2. Em seguida, acesse a URL do repositório de exemplo (aplicativo MyShuttle2 da Microsoft Connect 2016). Uma vez na página do repositório, clique no botão Fork na parte superior direita da página.

Forking a repo

Aguarde o processo de fork terminar. No final, você terá o repositório chamado “nome de usuário/MyShuttle2” na sua conta do GitHub, ao qual você tem acesso total.

3. Agora, adicione um novo arquivo ao repositório chamado Jenkinsfile. Um Jenkinsfile é um arquivo de texto que contém a definição de um Pipeline do Jenkins. Este arquivo deve estar dentro do repositório de código-fonte.

Na página do seu repositório, clique em Adicionar arquivo -> Criar novo arquivo.

Adding a new file

4. Digite Jenkinsfile como o nome do novo arquivo. Em seguida, copie o código abaixo e cole-o no seu Jenkinsfile.

  • O termo pipeline é um conjunto de instruções escritas em código para entrega contínua.
  • A stage block contains a series of steps in a pipeline, visualizing the Jenkins pipeline process.
  • A step is a single task that executes a specific process at a defined time. A pipeline contains a series of steps.

Este Jenkinsfile é apenas um exemplo básico de um script de pipeline. Na produção, os scripts de pipeline serão mais complexos e incluirão múltiplas ações em um ou todos os estágios.

pipeline {
    agent any

    stages {
        stage('Build') {
            steps {
                echo 'Building..'
            }
        }
        stage('Test') {
            steps {
                echo 'Testing..'
            }
        }
        stage('Deploy') {
            steps {
                echo 'Deploying....'
            }
        }
    }
}

Após escrever o código, seu arquivo terá a aparência da captura de tela abaixo.

Jenkinsfile pipeline script

5. Role até o final da página e clique em Commit new file.

Committing the new file

Agora você tem um Jenkinsfile no seu repositório.

New Jenkinsfile on the GitHub repo

6. Por fim, copie a URL do repositório. Para fazer isso, clique em Code e clique no botão Copy. Você precisará da URL resultante durante a criação do pipeline Jenkins CI CD.

Copying the repository URL

Criando um Jenkins CI CD Pipeline

O desenvolvimento de uma funcionalidade envolve muitas mudanças de código. Entre cada mudança de código, há uma série de tarefas a serem executadas. Essas tarefas podem incluir a confirmação de alterações, compilação, teste e empacotamento.

Serviços de automação como o Jenkins ajudam a tornar essas etapas rápidas e livres de erros.

1. Abra um navegador, acesse sua URL do Jenkins e faça login.

2. No Painel do Jenkins, clique na opção New Item no menu à esquerda.

Creating a new item in Jenkins

3. Digite o nome do novo pipeline. Para este tutorial, você o nomeará demoPipeline e selecione o modelo Pipeline. Clique em OK para finalizar.

Creating a Pipeline project

4. Verifique a caixa do projeto GitHub na aba Geral na página de configuração. Em seguida, cole a URL do repositório que você copiou anteriormente na caixa URL do Projeto.

Specifying the GitHub repository URL

5. Role para baixo até a seção Disparadores de Compilação e marque a caixa Disparador de gatilho do GitHub para polling GITScm, como na captura de tela abaixo.

Specifying the build trigger

6. Em seguida, role mais para baixo até a seção Pipeline e selecione/especifique os seguintes valores:

  • Definição: Script de Pipeline do SCM
  • SCM: Git
  • URL do Repositório: Sua URL do repositório
Specifying the pipeline values

7. Role até o final da página e confirme que o valor de Caminho do Script é Jenkinsfile. Esse valor referencia o Jenkinsfile que você criou anteriormente ao preparar seu repositório do Github. Por fim, clique em Salvar.

Saving the pipeline configuration

Configurando um Webhook no GitHub

Para o Jenkins executar um novo trabalho, primeiro você deve criar um webhook no repositório do GitHub. Esse webhook notificará o Jenkins assim que ocorrer um novo push no repositório.

Siga as etapas abaixo para criar um Webhook.

1. Acesse a página de Configurações e clique na aba Webhooks em seu repositório GitHub. Na página Webhooks, clique em Adicionar webhook.

Adding a webhook

2. Especifique o URL do seu Jenkins e adicione /github-webhook/ no campo de URL do Payload. Por exemplo, HTTP://jenkinsURLaqui/github-webhook/.

Também, altere o valor do Tipo de Conteúdo para application/json.

Setting the webhook URL and content type

3. Na seleção de Quais eventos você gostaria de acionar este webhook, clique na opção Deixe-me selecionar eventos individuais.

Selecting individual events

4. Role para baixo e marque as caixas de seleção Pushes e Pull requests. Essas opções garantirão que o GitHub envie um payload para o Jenkins durante esses eventos específicos.

Enabling Pushes and Pull requests events

5. Valide o webhook clicando no botão Adicionar webhook na parte inferior. Se a validação do webhook ocorrer bem, você verá uma notificação no topo da página semelhante à captura de tela abaixo.

Webhook creation notification

Executando e Acionando o Trabalho de Canalização de CI CD do Jenkins

Agora que você criou e configurou sua canalização, como saber se ela funciona? O Jenkins fornece um plugin de Visualização de Estágio da Canalização para ajudá-lo a visualizar o status da canalização.

1. Para abrir o status da canalização, abra a canalização no Jenkins e clique em Status. Como você pode ver abaixo, o status da Visualização de Estágio mostra Nenhum dado disponível porque não houve um evento que acionaria a canalização.

Jenkins pipeline stage view

2. Para gerar dados iniciais de compilação, clique em Build Now e aguarde o término do processo de compilação. Como pode ver abaixo, a Visualização de Estágio agora tem uma entrada, indicando que não há alterações nesta compilação.

To generate initial build data, click Build Now

3. Agora, teste o pipeline ao enviar um novo arquivo fictício para o repositório. Para fazer isso, volte ao seu repositório no GitHub e clique em Add File —> Criar novo arquivo.

Insira dummy como nome do novo arquivo e certifique-se de adicionar conteúdo.

Creating a new file

Por fim, clique em Commit new file na parte inferior da página.

4. Volte à página de status do seu pipeline no Jenkins e você deverá ver uma nova entrada de compilação com um commit, conforme mostrado abaixo.

Jenkins pipeline build status

Conclusão

Ao longo deste tutorial, você aprendeu como configurar um pipeline CI/CD do Jenkins para automatizar o ciclo de vida de desenvolvimento de software. Você também aprendeu como usar o Jenkins para manter uma sequência de ações para CI em um projeto de software.

Você acha que o pipeline CI/CD do Jenkins é uma estratégia que aplicaria aos seus projetos? Ou há outra que já usa e acredita ser uma solução de CI/CD melhor?

Source:
https://adamtheautomator.com/jenkins-ci-cd/