Melhorando Pipelines no Bitbucket: Cache, Reutilização de Steps e Execução Paralela
Vitor Rios
Posted on June 11, 2024
Introdução
Bitbucket Pipelines é uma ferramenta poderosa para integração contínua (CI) e entrega contínua (CD) que permite automatizar a construção, teste e implantação do seu código. Neste artigo, vamos explorar técnicas avançadas para otimizar suas pipelines no Bitbucket, incluindo o uso de cache, reutilização de steps e execução paralela de steps.
Benefícios das Técnicas Avançadas
- Uso de Cache: Reduz o tempo de execução da pipeline armazenando dependências entre builds.
- Reutilização de Steps: Facilita a manutenção e reduz a repetição de código.
- Execução Paralela de Steps: Diminui o tempo total de execução ao rodar múltiplos steps simultaneamente.
Configuração Básica
Vamos começar com uma configuração básica que utilizaremos como base para implementar as melhorias.
image: node:14
options:
max-time: 5 # Limite de tempo para cada pipeline, em minutos
pipelines:
default: # Pipeline default
- step:
name: Install dependencies
caches:
- node
script:
- npm install
- step:
name: Run lint
caches:
- node
script:
- npm run lint
- step:
name: Run tests
caches:
- node
script:
- npm test
- step:
name: Run prettier
caches:
- node
script:
- npm run prettier
- step:
name: Build
caches:
- node
script:
- npm run build
pull-requests: # Rodar essa pipeline na PR
'**':
- step:
name: Install dependencies
caches:
- node
script:
- npm install
- parallel:
- step:
name: Run lint
caches:
- node
script:
- npm run lint
- step:
name: Run tests
caches:
- node
script:
- npm test
- step:
name: Run prettier
caches:
- node
script:
- npm run prettier
- step:
name: Build
caches:
- node
script:
- npm run build
Implementando o Cache
Para usar cache de forma eficiente, vamos armazenar o diretório node_modules
entre builds. Isso economiza tempo ao evitar reinstalações desnecessárias de dependências.
definitions:
caches:
node: ./node_modules
Reutilização de Steps
Para evitar repetição de código, definimos steps reutilizáveis em uma seção de definições. Aqui está um exemplo de steps comuns como instalação de dependências, lint, testes, prettier e build.
definitions:
steps:
- step: &install-dependencies
name: Install dependencies
caches:
- node
script:
- npm install
- step: &lint
name: Run lint
caches:
- node
script:
- npm run lint
- step: &test
name: Run tests
caches:
- node
script:
- npm test
- step: &prettier
name: Run prettier
caches:
- node
script:
- npm run prettier
- step: &build
name: Build
caches:
- node
script:
- npm run build
Execução Paralela de Steps
Para reduzir o tempo total de execução da pipeline, podemos rodar certos steps em paralelo. A execução paralela é especialmente útil para tasks que não dependem uma da outra, como linting, testes e formatação de código.
Pipeline Final
Aqui está o arquivo bitbucket-pipelines.yml
completo, implementando cache, reutilização de steps e execução paralela:
image: node:14
options:
max-time: 5 # Limite de tempo para cada pipeline, em minutos
definitions:
caches:
node: ./node_modules
steps:
- step: &install-dependencies
name: Install dependencies
caches:
- node
script:
- npm install
- step: &lint
name: Run lint
caches:
- node
script:
- npm run lint
- step: &test
name: Run tests
caches:
- node
script:
- npm test
- step: &prettier
name: Run prettier
caches:
- node
script:
- npm run prettier
- step: &build
name: Build
caches:
- node
script:
- npm run build
pipelines:
default: # Pipeline default
- step: *install-dependencies
- parallel: # Rodar comandos em paralelo
- step: *lint
- step: *prettier
- step: *build
pull-requests: # Rodar essa pipeline na PR
'**':
- step: *install-dependencies
- parallel: # Rodar comandos em paralelo
- step: *lint
- step: *test
- step: *prettier
- step: *build
Benefícios das Melhorias
-
Uso de Cache:
- Benefício: Reduz o tempo de execução das builds ao evitar reinstalações desnecessárias de dependências.
-
Como funciona: Armazena o diretório
node_modules
entre builds, fazendo com que apenas novas dependências sejam instaladas.
-
Reutilização de Steps:
- Benefício: Facilita a manutenção e reduz a duplicação de código, tornando a configuração mais limpa e gerenciável.
- Como funciona: Define steps comuns em uma seção de definições e os referencia em diferentes pipelines.
-
Execução Paralela de Steps:
- Benefício: Diminui o tempo total de execução ao rodar múltiplos steps simultaneamente, acelerando o feedback para os desenvolvedores.
-
Como funciona: Usa a palavra-chave
parallel
para rodar steps que não dependem uns dos outros ao mesmo tempo.
Conclusão
Implementar cache, reutilização de steps e execução paralela em suas pipelines no Bitbucket pode trazer grandes melhorias em eficiência e manutenção. Essas práticas ajudam a otimizar o tempo de execução, reduzir a repetição de código e fornecer feedback mais rápido para os desenvolvedores, melhorando o fluxo de trabalho de CI/CD.
Caso queira dar uma olhadinha no código, segue o link do repositório:
Posted on June 11, 2024
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.
Related
June 11, 2024