Como Configurar uma Pipeline para Bitbucket Pipelines em um Projeto Node.js
Tags: pipeline, cicd, bitbucket, node
Published: 2024-06-05 17:58:38

### Introdução

Bitbucket Pipelines é uma ferramenta poderosa de integração contínua e entrega contínua (CI/CD) que permite automatizar a construção, teste e implantação de seu código diretamente do Bitbucket. Neste artigo, vamos mostrar como configurar uma pipeline para um projeto Node.js utilizando o Bitbucket Pipelines. 

### Pré-requisitos

- Conta no Bitbucket.
- Repositório do Bitbucket com um projeto Node.js.
- Conhecimento básico em YAML.

### Passo 1: Criar o Arquivo de Configuração

O primeiro passo é criar um arquivo de configuração para o Bitbucket Pipelines. Esse arquivo deve ser chamado `bitbucket-pipelines.yml` e deve ser colocado no diretório raiz do seu projeto.

### Passo 2: Configurar a Pipeline Básica

Aqui está um exemplo básico de configuração de pipeline para um projeto Node.js:

```yaml
image: node:14

pipelines:
  default:
    - step:
        name: Install dependencies
        caches:
          - node
        script:
          - npm install
    - step:
        name: Run tests
        script:
          - npm test
    - step:
        name: Build and deploy
        script:
          - npm run build
          - ./deploy.sh # Supondo que você tenha um script de deploy
```

#### Explicação dos Campos

- **image**: Define a imagem Docker que será usada para rodar o pipeline. Neste caso, estamos usando a imagem oficial do Node.js.
- **pipelines**: Define os pipelines que serão executados. No exemplo, estamos usando o pipeline padrão (`default`).
- **step**: Cada passo define um conjunto de comandos a serem executados.

### Passo 3: Configuração Detalhada

Para um cenário mais complexo, por exemplo, se você quiser que o deploy seja executado apenas em branches específicas como `main` ou `develop`, você pode configurar da seguinte forma:

```yaml
image: node:14

pipelines:
  default:
    - step:
        name: Install dependencies
        caches:
          - node
        script:
          - npm install
    - step:
        name: Run tests
        script:
          - npm test

  branches:
    main:
      - step:
          name: Build and deploy to production
          script:
            - npm run build
            - ./deploy.sh

    develop:
      - step:
          name: Build and deploy to staging
          script:
            - npm run build
            - ./deploy-staging.sh
```

### Passo 4: Variáveis de Ambiente

Se o seu processo de deploy precisar de variáveis de ambiente (por exemplo, chaves de API, credenciais, etc.), você pode configurá-las diretamente no Bitbucket:

1. Vá para o seu repositório no Bitbucket.
2. Clique em **Repository settings**.
3. Vá para a seção **Pipelines** > **Environment variables**.
4. Adicione as variáveis necessárias.

### Passo 5: Script de Deploy

Aqui está um exemplo simples de um script de deploy (`deploy.sh`) que você pode usar para copiar o build para o servidor e reiniciar a aplicação:

```bash
#!/bin/bash

# Fazer o deploy do build para o servidor
scp -r ./build user@your-server:/path/to/deploy

# Rodar comandos no servidor remoto
ssh user@your-server << 'EOF'
  cd /path/to/deploy
  npm install --production
  pm2 restart your-app
EOF
```

### Explicação do Script

- **scp**: Este comando copia recursivamente a pasta `./build` para o servidor remoto.
- **ssh**: Este comando executa comandos no servidor remoto. No exemplo, ele navega até o diretório de deploy, instala as dependências de produção e reinicia a aplicação usando `pm2`.

### Conclusão

Configurar uma pipeline no Bitbucket Pipelines é uma maneira eficiente de automatizar o processo de construção, teste e implantação de seu projeto Node.js. O exemplo fornecido aqui é um ponto de partida que você pode personalizar conforme suas necessidades específicas. 

A automação de tarefas repetitivas não só economiza tempo, mas também reduz o risco de erros humanos, garantindo que o código seja testado e implantado de maneira consistente.

Se você tiver dúvidas ou precisar de mais detalhes sobre algum dos passos, sinta-se à vontade para perguntar!

Caso queira dar uma olhadinha no código, segue o link do repositório:

[Node-Example](https://bitbucket.org/vitorrios/node-example/src/6bdcb40cc4f4e45c2029b0788d4b6d488a28ce71/?at=chore%2Ffirst-ci-cd)