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:
Discover more from Coursity
Subscribe to get the latest posts sent to your email.