You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Translates README to Portuguese and expands documentation
Localizes the entire README content to Brazilian Portuguese to better
align with the project's Porto Alegre origin and target audience.
Enhances documentation structure by adding comprehensive sections on
architecture, project components, and setup instructions.
Introduces detailed directory structure visualization and step-by-step
execution guide to improve project reproducibility.
Updates technology stack description to clarify the rationale behind
tool selection and GitHub Student Pack benefits.
Refines project objectives with more explicit DevOps competency goals
including CI/CD automation, IaC, observability, and secret management.
**Pipeline de DevOps ponta a ponta para uma aplicação Flask, construído por uma estudante de Ciência da Computação em Porto Alegre.**
8
6
9
-
This project demonstrates a complete DevOps workflow for a lightweight Python (Flask) application, from local development to cloud deployment, monitoring, and secure configuration. It’s designed to be **reproducible, documented, and production-ready**— even as a learning project.
7
+
Este projeto demonstra um fluxo de trabalho de DevOps completo para uma aplicação leve em Python (Flask), desde o desenvolvimento local até a implantação na nuvem, monitoramento e configuração segura. Ele foi projetado para ser **reprodutível, documentado e pronto para produção**- mesmo como um projeto de aprendizado.
10
8
11
9
---
12
10
13
11
## 🎯 Objetivo
14
12
15
-
Criar uma base prática para:
16
-
- Automatizar testes e deploy com **GitHub Actions**
17
-
- Provisionar infraestrutura na nuvem com **Terraform + DigitalOcean**
18
-
- Monitorar performance e erros com **New Relic**
19
-
- Gerenciar secrets de forma segura com **Doppler**
20
-
- Documentar decisões técnicas e arquitetura
13
+
O objetivo principal deste projeto é criar uma base prática e demonstrável para as seguintes competências de DevOps:
21
14
22
-
> ✨ Este projeto faz parte do meu portfólio DevOps enquanto estudante de Ciência da Computação na Unisinos (Porto Alegre).
15
+
***Automação de CI/CD:** Automatizar testes e implantação com **GitHub Actions**.
16
+
***Infraestrutura como Código (IaC):** Provisionar infraestrutura na nuvem com **OpenTofu**(Terraform) e **DigitalOcean**.
17
+
***Observabilidade:** Monitorar o desempenho da aplicação e a saúde da infraestrutura com **New Relic**.
18
+
***Gerenciamento de Segredos:** Gerenciar chaves de API e outras informações sensíveis de forma segura com **Doppler**.
19
+
***Documentação:** Documentar decisões técnicas e arquitetura de forma clara e concisa.
20
+
21
+
> ✨ Este projeto faz parte do meu portfólio de DevOps enquanto estudante de Ciência da Computação na Unisinos (Porto Alegre).
23
22
24
23
---
25
24
26
25
## 🛠️ Stack Tecnológica
27
26
27
+
A seleção de ferramentas foi orientada para o uso de tecnologias modernas e populares no mercado, com um foco especial em aproveitar os benefícios do **GitHub Student Developer Pack**.
|**Desenvolvimento**| GitHub Codespaces | ✅ Acesso Pro |
36
37
37
38
---
39
+
40
+
## 🏗️ Arquitetura
41
+
42
+
A arquitetura do projeto é dividida em três componentes principais:
43
+
44
+
1.**Aplicação (`/app`):** Uma aplicação web simples em Flask que serve como carga de trabalho para o pipeline.
45
+
2.**Infraestrutura como Código (`/tofu`):** Código Terraform para provisionar os recursos necessários na DigitalOcean.
46
+
3.**CI/CD (`/.github/workflows`):** Workflows do GitHub Actions que orquestram o build, teste e deploy da aplicação.
47
+
48
+
### Estrutura de Diretórios
49
+
50
+
```
51
+
infra-pipeline-poa/
52
+
├── .github/
53
+
│ └── workflows/
54
+
│ └── ci.yml
55
+
├── app/
56
+
│ ├── app.py
57
+
│ └── requirements.txt
58
+
├── tofu/
59
+
│ ├── environments/
60
+
│ │ ├── dev/
61
+
│ │ └── prod/
62
+
│ ├── modules/
63
+
│ │ ├── compute/
64
+
│ │ ├── database/
65
+
│ │ └── networking/
66
+
│ ├── scripts/
67
+
│ │ └── cloud-init.yaml
68
+
│ ├── main.tf
69
+
│ ├── variables.tf
70
+
│ ├── outputs.tf
71
+
│ └── versions.tf
72
+
└── README.md
73
+
```
74
+
75
+
### Detalhes dos Componentes
76
+
77
+
***`/app`**: Contém a aplicação Flask. É uma aplicação "Hello, World!" que foi configurada para ser containerizada e implantada.
78
+
***`/tofu`**: Organizado com uma estrutura de módulos e ambientes para promover a reutilização e a separação de configurações. O diretório `modules` contém os componentes reutilizáveis da infraestrutura (computação, rede, banco de dados), enquanto `environments` define as configurações específicas para cada ambiente (desenvolvimento e produção).
79
+
***`/.github/workflows/ci.yml`**: Define o pipeline de CI/CD. Atualmente, ele está configurado para ser acionado em cada push para o branch `main`, executando as etapas de build, teste e implantação.
80
+
81
+
---
82
+
83
+
## 🚀 Como Executar
84
+
85
+
Para reproduzir este projeto, você precisará de contas nas seguintes plataformas:
86
+
87
+
* GitHub
88
+
* DigitalOcean
89
+
* New Relic
90
+
* Doppler
91
+
92
+
### Configuração
93
+
94
+
1.**Fork este repositório:** Comece criando um fork deste repositório para a sua própria conta do GitHub.
95
+
96
+
2.**Configure o Doppler:** Crie um projeto no Doppler e adicione os segredos necessários (chaves de API da DigitalOcean e New Relic). O arquivo `.doppler.yaml` no repositório já está configurado para usar o Doppler CLI para injetar os segredos no ambiente de CI/CD.
97
+
98
+
3.**Configure os Segredos do GitHub:** Adicione o token de acesso do Doppler como um segredo no seu repositório GitHub (`DOPPLER_TOKEN`).
99
+
100
+
### Executando o Pipeline
101
+
102
+
Com a configuração concluída, qualquer push para o branch `main` irá acionar o workflow do GitHub Actions. O pipeline irá:
103
+
104
+
1. Fazer o checkout do código.
105
+
2. Configurar o ambiente com as ferramentas necessárias (Terraform, Python, etc.).
106
+
3. Injetar os segredos do Doppler no ambiente.
107
+
4. Executar o Terraform para provisionar ou atualizar a infraestrutura.
108
+
5. Construir e testar a aplicação Flask.
109
+
6. Implantar a aplicação na infraestrutura provisionada.
0 commit comments