📚 Pré-requisitos Teóricos: este projeto aplica conceitos ensinados em Guia de Ferramentas. Recomendado revisar antes de começar.

🛠️ Ambientes Reprodutíveis com DevContainers & Makefiles

v1.0 — DevContainers W3C, Docker, Automação de Tarefas com Make e Ambientes Herméticos

Trilha de Especialização Pedagógica — Projeto 1 de 4

🎓 Nível Profissional Simulado: Engenheiro DevOps / Platform Engineer Trainee. O dilema “na minha máquina funciona” acabou. Empresas modernas utilizam DevContainers e Makefiles, garantindo que um novo desenvolvedor consiga clonar o repositório e rodar o projeto em 30 segundos, exatamente com as mesmas versões de compilador e dependências de produção.

—`

🎯 Objetivo & Escopo do Projeto

Criar a infraestrutura de Ambiente Reprodutível de Desenvolvimento utilizando a especificação aberta DevContainers (.devcontainer/devcontainer.json), isolamento com Docker e automação padronizada de comandos operacionais (make build, make test, make lint, make run) através de um Makefile Canônico.

—`

🧑‍💼 Fase 1 — Levantamento de Requisitos

O Briefing do Cliente (Tech Lead & Coordenador de Engenharia)

“Levamos 3 dias para configurar o computador de um novo desenvolvedor contratado porque cada um usa um sistema operacional diferente (Windows, Mac, Ubuntu) com versões conflitantes do Java, Node e Python. Queremos que qualquer desenvolvedor abra o VS Code, clique em ‘Reopen in Container’ e tenha o ambiente 100% pronto com todas as extensões instaladas e possa rodar o projeto simplesmente digitando make run.”

Requisitos Funcionais (RF) e Não-Funcionais (RNF)

ID Tipo Descrição Origem no Briefing
RF01 Funcional Configurar .devcontainer/devcontainer.json com imagem base, portas e extensões recomendadas. “clique em Reopen in Container”
RF02 Funcional Implementar Makefile com targets canônicos: build, test, lint, clean e run. “rodar o projeto digitando make run”
RF03 Funcional Script de pós-criação (postCreateCommand) instalando ferramentas automaticamente. “ambiente 100% pronto”
RNF01 Não-Funcional Reprodutibilidade idêntica em Windows (WSL2), macOS (Apple Silicon) e Linux. Portabilidade Total
RNF02 Não-Funcional Makefile determinístico com declaração explícita de .PHONY. Boas Práticas Make

—`

📋 Fase 2 — Backlog & User Stories

ID User Story Prioridade
US01 Como novo membro do time, quero começar a programar no meu primeiro dia sem instalar 10 ferramentas locais. Alta
US02 Como time de CI/CD, quero rodar make test no GitHub Actions executando exatamente a mesma instrução dos devs. Alta

—`

🌿 Fase 3 — Engenharia em Equipe (Git Flow & Execução)

# Branch da funcionalidade
git checkout -b feature/US01-devcontainer-makefile

# Executar os targets do Makefile
make build
make test

—`

🛠️ Fase 4 — Implementação do Makefile Canônico

SHELL := /bin/bash

.PHONY: all build test clean run

all: build test

build:
	@echo "==> Compilando a aplicacao..."

test:
	@echo "==> Executando suíte de testes automatizados..."

clean:
	@echo "==> Limpando artefatos temporarios..."

run:
	@echo "==> Iniciando o servidor de desenvolvimento..."

—`

🚀 Como Executar no Laboratório

1. Abra o terminal na pasta deste projeto

No seu editor/IDE, abra a pasta deste projeto (File > Open Folder) ou navegue via terminal:

cd tools_01_devcontainer_makefile

2. Execute a aplicação ou testes

# Executar comandos específicos da tecnologia:
python main.py # ou npm run dev / ./gradlew build

[!TIP] Dica para execução a partir da raiz do repositório: Se você abriu o repositório completo no VS Code, basta navegar até a pasta antes de executar: cd proj_aplicacoes_full_stack/projetos/tools_01_devcontainer_makefile`

🧭 Decisões de Arquitetura (ADRs)

—`

🧪 Testes de Validação & Asserções

# Validar se o Makefile executa todos os alvos sem erros
make all

—`

✅ Checkpoint Final

  1. Especificação DevContainer válida e pronta para o VS Code.
  2. Makefile executando targets com sucesso.

⬅️ Ver Todos os Projetos no Super-Hub 🏠 Página Inicial do Portal