Skip to content

Thiago-code-lab/pipeline-devsecops-docker-gitea

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🚀🔒 Pipeline DevSecOps Completo com Docker e Gitea

Docker Gitea Python License: MIT Status

Ambiente completo de DevSecOps local com CI/CD integrado, análise de segurança e monitoramento. Ideal para desenvolver habilidades em segurança de aplicações e automação em ambiente controlado.**

🚀 Funcionalidades

📋 Aplicação Flask

  • Gerenciador de Tarefas com CRUD completo
  • API REST para integração com CI/CD
  • Health Check para monitoramento
  • Interface web moderna e responsiva

🐙 Gitea (Git Self-hosted)

  • Repositório Git local
  • Gitea Actions (CI/CD nativo)
  • Interface web similar ao GitHub
  • SSH para acesso remoto

🔒 Segurança Integrada

  • Bandit (SAST) - Análise estática de código Python
  • Trivy (SCA/DAST) - Análise de vulnerabilidades em containers
  • Docker Security - Boas práticas de containerização

🏗️ Arquitetura

┌─────────────────┐    ┌─────────────────┐    ┌─────────────────┐
│   Flask App     │    │     Gitea       │    │   PostgreSQL    │
│   (Port 5000)   │    │   (Port 3000)   │    │   (Database)    │
└─────────────────┘    └─────────────────┘    └─────────────────┘
         │                       │                       │
         └───────────────────────┼───────────────────────┘
                                 │
                    ┌─────────────────┐
                    │  Docker Network │
                    │  devsecops-net  │
                    └─────────────────┘

🛠️ Tecnologias

  • Backend: Flask, SQLAlchemy
  • Frontend: HTML5, CSS3, JavaScript
  • Containerização: Docker, Docker Compose
  • Git: Gitea (self-hosted)
  • Database: SQLite (app), PostgreSQL (Gitea)
  • Segurança: Bandit, Trivy
  • Testes: pytest

📦 Instalação e Uso

Pré-requisitos

  • Docker Desktop
  • Git
  • Navegador web

1. Clone o repositório

git clone https://github.com/seu-usuario/pipeline-devsecops-docker-gitea.git
cd pipeline-devsecops-docker-gitea

2. Execute o ambiente

docker-compose up --build -d

3. Acesse as aplicações

🔧 Configuração do Gitea

Primeira execução:

  1. Acesse http://localhost:3000
  2. Configure o banco de dados:
    • Database Type: PostgreSQL
    • Host: gitea-db:5432
    • Username: gitea
    • Password: gitea
    • Database Name: gitea
  3. Configure o administrador
  4. Crie seu primeiro repositório

🧪 Testes

Execute os testes automatizados:

docker-compose exec app python -m pytest tests/

🔒 Análise de Segurança

Bandit (SAST)

docker-compose exec app bandit -r .

Trivy (SCA/DAST)

docker-compose exec app trivy fs .

📁 Estrutura do Projeto

pipeline-devsecops-docker-gitea/
├── app/                      # Pacote principal da aplicação Flask
│   ├── __init__.py           # App factory (create_app)
│   ├── wsgi.py               # Ponto de entrada WSGI
│   ├── api/                  # Blueprints da API
│   ├── auth/                 # Autenticação
│   ├── health/               # Healthcheck
│   ├── static/               # Arquivos estáticos
│   └── templates/            # Templates Jinja
├── wsgi.py                   # Wrapper/entry (desenvolvimento)
├── app.py                    # Script utilitário (se aplicável)
├── docker-compose.yml        # Orquestração dos containers
├── Dockerfile                # Containerização da aplicação
├── requirements.txt          # Dependências Python
├── templates/
│   └── index.html            # Interface web
├── tests/
│   └── test_app.py           # Testes automatizados
├── .github/
│   └── workflows/
│       └── ci-cd.yml         # Pipeline CI/CD
├── .gitignore                # Arquivos ignorados pelo Git
└── README.md                 # Documentação

🔄 CI/CD Pipeline

O projeto inclui um pipeline CI/CD configurado com:

  1. Build: Construção da imagem Docker
  2. Test: Execução de testes automatizados
  3. Security Scan: Análise de vulnerabilidades
  4. Deploy: Deploy automático (configurável)

🛡️ Segurança

Boas Práticas Implementadas:

  • ✅ Usuário não-root no container
  • ✅ Health checks configurados
  • ✅ Dependências atualizadas
  • ✅ Análise estática de código
  • ✅ Scan de vulnerabilidades
  • ✅ Network isolation

Vulnerabilidades Comuns Mitigadas:

  • ✅ SQL Injection (SQLAlchemy ORM)
  • ✅ XSS (Template escaping)
  • ✅ CSRF (Flask-WTF)
  • ✅ Container escape (usuário não-root)

🤝 Contribuição

  1. Fork o projeto
  2. Crie uma branch para sua feature (git checkout -b feature/AmazingFeature)
  3. Commit suas mudanças (git commit -m 'Add some AmazingFeature')
  4. Push para a branch (git push origin feature/AmazingFeature)
  5. Abra um Pull Request

📄 Licença

Este projeto está sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.

🆘 Suporte

Se você encontrar algum problema ou tiver dúvidas:

  1. Verifique os logs: docker-compose logs app
  2. Reinicie os containers: docker-compose restart app
  3. Cheque se a aplicação está escutando: acesse http://localhost:5001/health
  4. Verifique variáveis no docker-compose.yml para o serviço app:
    • FLASK_APP=wsgi:app
    • PYTHONPATH=.
    • command: flask run --host=0.0.0.0 --port=5000
  5. Confirme o volume está montado: .:/app
  6. Se aparecer erro "Could not import 'wsgi'" ou "No module named wsgi", garanta que o arquivo wsgi.py existe em app/wsgi.py e que o diretório de trabalho é /app no container.
  7. Abra uma issue no GitHub

🎯 Próximos Passos

  • Integração com SonarQube
  • Análise de dependências com Safety
  • Implementação de secrets management
  • Configuração de backup automático
  • Monitoramento com Prometheus/Grafana

Desenvolvido com ❤️ para a comunidade DevSecOps
Docker Gitea Flask

About

Pipeline DevSecOps local com Docker, Gitea Actions e análise de vulnerabilidades

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published