Neste artigo vamos explorar os primeiros passos para configurar e utilizar o Bitbucket Pipelines.

CI/CD com Bitbucket: primeiros passos

O Bitbucket Pipelines é uma ferramenta poderosa que permite a automação de builds, testes e implantações diretamente do Bitbucket. Para um profissional de DevOps, compreender e utilizar essa ferramenta pode otimizar significativamente o fluxo de trabalho e garantir maior eficiência nas entregas de software. Neste artigo vamos explorar os primeiros passos para configurar e utilizar o Bitbucket Pipelines.

Introdução ao Bitbucket Pipelines

Um dos pontos positivos do Bitbucket é que ele faz parte do ecossistema de soluções da Atlassian, que também é proprietária de ferramentas como Zendesk, Jira, Trello e Confluence. Se você ainda não conhece essas ferramentas, um dia muito provavelmente irá conhecer pelo seu potencial ou pela sua popularidade na indústria de desenvolvimento de software. O ponto positivo é a facilidade de integração entre as ferramentas e todo suporte ao ecossistema que você tem, deixando tudo centralizado e fácil para administrar. 

Assim como seus concorrentes, o Bitbucket Pipelines é uma ferramenta focada em CI/CD, possibilitando automação de processos, compilação, testes de código e deploys.

Estrutura do Bitbucket Pipelines

Dentro do Bitbucket, temos a tradicional hierarquia de Organizações, Projetos e Repositórios. Dentro de cada repositório, você pode criar uma pipeline de execução.

Dentro do repositório, os pré requisitos que você tem que ter para executar esse passo a passo são:

  • ter um código versionado;
  • ter permissões suficientes para alterar as configurações básicas do repositório.

Em configurações, habilite o repositório para executar a pipeline. A própria ferramenta irá sugerir um template para facilitar a sua vida. Nesse momento, podemos ignorar e aceitar a sugestão da ferramenta apenas para criar nosso exemplo.

Esse arquivo é padrão e obrigatório para criarmos pipelines no Bitbucket, ou seja, ele sempre precisará estar na raiz do projeto e se chamar bitbucket-pipelines.yml.

Pipeline na prática

Para fins didáticos, utilizaremos um exemplo de “Hello world” em Node.js que está disponível aqui. Neste exemplo básico, definiremos apenas a instalação dos pacotes do Node.js. Abaixo temos o conteúdo do arquivo bitbucket-pipelines.yml, que define a estrutura da pipeline.

				
					image: node:lts-alpine3.19
pipelines:
  default:
    - step:
        name: Build and Test
        caches:
          - node
        script:
          - npm install
				
			

Vamos analisar cada linha do código do arquivo bitbucket-pipelines.yml fornecido e entender o que ela faz:

image: define a imagem do Docker a ser usada para executar o passo. Neste caso, a imagem “node:lts-alpine3.19” será usada, que contém o Node.js instalado.

pipelines: define a seção “pipelines” do arquivo YAML. As pipelines são usadas para definir os passos ou estágios de um processo de integração contínua.

default: define a seção “default” dentro da seção “pipelines”. A seção “default” é usada para definir os passos padrão que serão executados quando nenhum outro estágio específico for especificado.

– step: define um passo dentro da seção “default”. Um passo é uma tarefa específica que será executada durante o processo de integração contínua.

name: Build and Test: define o nome do passo como “Build and Test”. É uma descrição opcional que ajuda a identificar o objetivo do passo.

caches: define a seção “caches” dentro do passo. Os caches são usados para armazenar dados em cache entre as execuções dos passos, a fim de melhorar o desempenho.

– node: define um cache chamado “node”. Neste caso, o cache “node” será usado para armazenar as dependências do Node.js, a fim de evitar a necessidade de instalá-las novamente a cada execução.

script: define a seção “script” dentro do passo. A seção “script” contém os comandos que serão executados durante o passo. Aqui é onde você preenche todos os passos que sua aplicação deverá seguir, seja instalação de pacotes, execução de testes e etc. Cada comando pode ser representado separadamente assim:

				
					script:
    - npm install
    - npm test
    - npm x
				
			

Variáveis e Segredos

Podemos utilizar o recurso de variáveis e segredos no Bitbucket para armazenar informações sensíveis, parâmetros de configuração que variam entre ambientes e etc. Dentro de configurações de repositório, em Pipelines, encontramos a opção para criar variáveis.

Para utilizar as variáveis dentro do arquivo YAML, basta referenciar o nome da variável criada, precedido de $, por exemplo:

				
					script:
          - npm install
          - npm test
          - echo $Teste
				
			

Scripts

Uma outra funcionalidade muito importante é a capacidade de executar scripts dentro da pipeline. Desde que o arquivo exista dentro do repositório em que você irá criar a pipeline, você também consegue criar scripts bash para serem executados dentro dela:

				
					  script:
          - ./deploy.sh
				
			

Triggers: decidindo quando uma pipeline será executada

No contexto de DevOps e integração contínua (CI), as triggers de pipeline são mecanismos essenciais para automatizar e controlar a execução dos pipelines com base em eventos específicos. No Bitbucket Pipelines, as triggers definem quando e como um pipeline deve ser iniciado, oferecendo flexibilidade e controle para diferentes fluxos de trabalho. 

Para o Bitbucket, temos alguns tipos de trigger e iremos explorá-las para entender melhor como configurar a execução de sua pipeline.

Triggers de Branches

Nessa configuração, você poderá executar diferentes scripts para branchs distintas. Para a branch Master, a pipeline irá executar a mensagem: “Pipeline para a branch master” e para a Develop “Pipeline para a branch develop”. Esse tipo de estratégia é excelente quando você precisa economizar tempo de pipelines, executando apenas trechos ou eliminando a necessidade de executar o mesmo script sempre:

				
					pipelines:
  branches:
    master:
      - step:
          script:
            - echo "Pipeline para o branch master"
    develop:
      - step:
          script:
            - echo "Pipeline para o branch develop"
				
			

Triggers de Pull Requests

Executam pipelines quando um pull request é criado ou atualizado. Isso é útil para garantir que as alterações propostas não introduzem erros.

				
					pipelines:
  pull-requests:
    ‘**’:
      - step:
          script:
            - echo "aqui só vai executar no momento do Pull Request"
				
			

Triggers Agendadas ou CRON

Permitem executar pipelines em horários específicos, independentemente de commits ou pull requests. Isso é útil para tarefas de manutenção, backups ou testes periódicos. Esse tipo de operação é muito utilizado para fazer check-ups durante a madrugada ou fora do horário comercial, fazendo com que você desafogue a maior parte das execuções excessivas ou que demore muito para um horário menos concorrido de execução. Para isso, basta criar a pipeline do tipo custom e agendar manualmente pela interface no menu Pipeline > Schecules.

Histórico de execução da pipeline

Dentro da estrutura do repositório, todas as execuções da pipeline ficarão sempre no menu Pipelines. Lá você pode ver o histórico, erros, ou até mesmo executar novamente uma pipeline:


A pipeline que usamos para exemplo didático terá o visual dessa forma:

Aqui, podemos ver que a numeração de execução da pipeline, o commit que disparou o gatilho, a pessoa responsável pela execução, o tempo de execução e em que momento do dia essa pipeline foi executada.

Ao lado direito, podemos explorar todos os logs de cada execução que programamos também. No nosso exemplo, colocamos apenas a instalação de dependências, clicarmos na linha do npm install para ver o seu log e todo o output de sua execução.


Acelere a sua carreira conosco!

A Mentoria DevOps é um programa de mentoria de 12 meses com encontros semanais ao vivo, com um grupo seleto e restrito, onde estaremos do seu lado para mantê-lo relevante e atualizado no mercado de tecnologia, aprendendo e implementando as melhores práticas e ferramentas de DevOps.

Clique aqui para entrar na prioridade pela melhor oferta de lançamento

Conclusão

Agora que você já deu os primeiros passos na construção de pipelines no Bitbucket, é importante praticar e explorar a ferramenta. Você pode, por exemplo, tentar criar sua primeira pipeline para um projeto existente, ou criar um novo projeto simples para praticar. Como vimos, o Bitbucket dispõe de diversos recursos para permitir a criação de um ecossistema de DevOps robusto e eficiente.