Skip to content

Commit

Permalink
Update README.md
Browse files Browse the repository at this point in the history
  • Loading branch information
luiseduardoalencar authored Nov 26, 2024
1 parent db59435 commit 85918a9
Showing 1 changed file with 85 additions and 1 deletion.
86 changes: 85 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -105,5 +105,89 @@ Execute a análise do código com o comando:
```bash
./mvnw sonar:sonar -Dsonar.host.url=http://localhost:9000 -Dsonar.login=<TOKEN_SONARQUBE>
```

---

## Integração e Deploy Contínuos (CI/CD) com GitHub Actions

A aplicação conta com um workflow automatizado de build e deploy utilizando o **GitHub Actions**, configurado no arquivo `.github/workflows/prod.yml`. Esse arquivo define um pipeline que executa os seguintes passos ao realizar um push para o branch `main`:

#### Estrutura do Workflow

1. **Eventos Disparadores**
- O workflow é executado automaticamente toda vez que há um `push` para o branch `main`.

2. **Jobs Definidos**
- O workflow possui dois jobs principais: `build` e `deploy`.

#### Job: Build

O job `build` é responsável por compilar a aplicação e preparar a imagem Docker. Ele utiliza a máquina virtual do GitHub para executar os seguintes passos:

- **Checkout do Código**
- Obtém o código da aplicação do repositório.

- **Configuração do Ambiente Java**
- Configura o ambiente com Java 17, utilizando o Temurin como distribuição.

- **Compilação da Aplicação**
- Realiza o build da aplicação com o Maven, garantindo que a aplicação está pronta para ser empacotada.

- **Autenticação no Docker Hub**
- Faz login no Docker Hub utilizando credenciais armazenadas como secrets no repositório.

- **Build da Imagem Docker**
- Constrói a imagem Docker da aplicação, com a tag correspondente ao repositório no Docker Hub.

- **Publicação da Imagem**
- Envia a imagem construída para o Docker Hub.

#### Job: Deploy

O job `deploy` depende do `build` para ser executado. Ele realiza o deploy da aplicação utilizando um runner self-hosted (um servidor próprio configurado para rodar ações do GitHub). Os passos executados são:

- **Download da Imagem Docker**
- Faz o pull da imagem mais recente da aplicação a partir do Docker Hub.

- **Remoção do Container Anterior**
- Remove o container existente para garantir que não há conflitos.

- **Início do Novo Container**
- Inicia um novo container da aplicação, configurando as variáveis de ambiente para conexão com o banco de dados.

#### Variáveis de Ambiente

O workflow utiliza secrets do GitHub para armazenar informações sensíveis, como:
- `DOCKER_USERNAME` e `DOCKER_PASSWORD` (credenciais do Docker Hub)
- `DATABASE_URL`, `DATABASE_USERNAME` e `DATABASE_PASSWORD` (informações do banco de dados)

Essas variáveis são injetadas no ambiente durante o build e deploy, garantindo segurança e flexibilidade.

#### Benefícios

1. **Automação Total**
- Ao realizar um `git push` para o branch `main`, o pipeline cuida de todo o processo de build e deploy automaticamente.

2. **Confiabilidade**
- Cada etapa do workflow é isolada e validada, minimizando erros manuais durante o deploy.

3. **Escalabilidade**
- A utilização do Docker garante que a aplicação seja executada de forma consistente em qualquer ambiente.

4. **Segurança**
- Secrets armazenados no repositório GitHub garantem que informações sensíveis não sejam expostas.

#### Como Usar

1. Faça commit e push das alterações para o branch `main`:
```bash
git add .
git commit -m "Descrição do commit"
git push origin main
```

2. O pipeline será disparado automaticamente, e você poderá acompanhar a execução no GitHub Actions.

3. Após a conclusão, a aplicação estará disponível no ambiente configurado.

Com essa abordagem, você garante agilidade no desenvolvimento, reduzindo o tempo necessário para colocar mudanças em produção!

0 comments on commit 85918a9

Please sign in to comment.