# Aula 3: Planejamento no GitLab

**Data:** 11/09/2025  
**Módulo:** 1 - Fundamentos e Iniciação do Projeto  
**Duração:** 90 minutos  
**Tipo:** Teórico-Prática

***

## 📋 Resumo Executivo

Esta aula introduz os conceitos fundamentais de planejamento de projetos utilizando o GitLab como plataforma central. Os alunos aprenderão sobre iniciação formal de projetos, configuração de repositórios, gestão de issues e milestones, além de implementar automação com CI/CD. A aula combina teoria com prática, preparando as equipes para organizar e executar seus projetos de forma profissional.

***

## 🎯 Objetivos da Aula

### Objetivos Gerais
- Introduzir o processo de iniciação formal de projetos
- Dominar a configuração de repositórios GitLab
- Aplicar conceitos de gestão ágil com Issues e Milestones
- Implementar automação com CI/CD

### Objetivos de Aprendizagem
- Compreender o processo de iniciação formal de projetos
- Dominar a configuração de repositórios GitLab
- Aplicar conceitos de gestão ágil com Issues e Milestones
- Implementar automação com CI/CD
- Organizar equipes e definir responsabilidades

***

## ⏰ Cronograma da Aula

| Tempo | Atividade | Descrição |
|-------|-----------|-----------|
| **15 min** | **Revisão e Contexto** | Revisão da aula anterior e contexto do GitLab |
| **25 min** | **Iniciação Formal** | Project Charter e configuração inicial |
| **30 min** | **Configuração GitLab** | Repositórios, Issues e Milestones |
| **20 min** | **CI/CD e Automação** | Pipeline básico e automação |

***

## 📚 Conteúdo Teórico

### 1. Iniciação Formal do Projeto

#### Project Charter
- **Definição:** Documento que autoriza formalmente o projeto
- **Elementos essenciais:**
  - Objetivos e justificativa
  - Escopo inicial
  - Stakeholders principais
  - Recursos necessários
  - Riscos iniciais
  - Critérios de sucesso

#### Processo de Iniciação
1. **Identificação** do projeto
2. **Análise** de viabilidade
3. **Definição** de objetivos
4. **Autorização** formal
5. **Comunicação** aos stakeholders

### 2. Configuração de Repositórios GitLab

#### Estrutura de Repositórios
- **Repositório único:** Toda documentação e código em um local
- **Múltiplos repositórios:** Separação por componente
- **Vantagens e desvantagens** de cada abordagem
- **Recomendação:** Repositório único para projetos acadêmicos

#### Configuração Inicial
- **Criação do grupo** no GitLab
- **Configuração de permissões**
- **Estrutura de pastas** padronizada
- **README.md** inicial
- **Gitignore** apropriado

### 3. Gestão de Issues e Milestones

#### Issues (Tarefas)
- **Tipos de issues:**
  - Feature (funcionalidade)
  - Bug (correção)
  - Task (tarefa)
  - Epic (conjunto de features)

#### Estrutura de uma Issue
- **Título:** Descrição clara e concisa
- **Descrição:** Detalhamento da tarefa
- **Critérios de aceitação:** Como validar a conclusão
- **Labels:** Categorização e priorização
- **Assignee:** Responsável pela tarefa
- **Milestone:** Sprint ou fase do projeto

#### Milestones (Marcos)
- **Definição:** Marcos temporais do projeto
- **Características:**
  - Data de início e fim
  - Issues associadas
  - Progresso visual
  - Critérios de conclusão

### 4. CI/CD e Automação

#### Conceitos Básicos
- **CI (Continuous Integration):** Integração contínua
- **CD (Continuous Deployment):** Deploy contínuo
- **Pipeline:** Sequência de etapas automatizadas
- **Benefícios:** Qualidade, velocidade, confiabilidade

#### Pipeline Básico
1. **Build:** Compilação e preparação
2. **Test:** Execução de testes
3. **Deploy:** Publicação do resultado
4. **Notify:** Notificação de status

***

## 🛠️ Atividades Práticas

### Tarefa 1: Criação do Project Charter

#### Objetivo
Documentar formalmente o projeto Assistente IA.

#### Passos
1. **Definição de Objetivos:**
   - Objetivo principal do projeto
   - Objetivos específicos mensuráveis
   - Justificativa e valor agregado
   - Critérios de sucesso

2. **Identificação de Stakeholders:**
   - Equipe de desenvolvimento
   - Professor (cliente)
   - Usuários finais
   - Outros interessados

3. **Definição de Escopo Inicial:**
   - Funcionalidades principais
   - Entregas esperadas
   - Limitações e exclusões
   - Premissas e restrições

4. **Documentação:**
   - Criar documento no GitLab
   - Usar template padronizado
   - Revisar e aprovar em equipe

#### Critérios de Sucesso
- [ ] Project Charter completo
- [ ] Objetivos claros e mensuráveis
- [ ] Stakeholders identificados
- [ ] Escopo bem definido
- [ ] Documento aprovado pela equipe

### Tarefa 2: Configuração do Repositório GitLab

#### Objetivo
Configurar repositório profissional para o projeto.

#### Passos
1. **Criação do Grupo:**
   - Nome: `GestaoProjSoft-2025-1-[NomeEquipe]`
   - Descrição: Projeto Assistente IA
   - Visibilidade: Privado
   - Configurações de permissão

2. **Criação do Projeto:**
   - Nome: `portfolio-equipe`
   - Descrição detalhada
   - Inicializar com README.md
   - Configurar .gitignore

3. **Estrutura de Pastas:**
   ```
   portfolio-equipe/
   ├── docs/           # Documentação
   ├── src/            # Código fonte
   ├── static/         # Arquivos estáticos
   ├── templates/      # Templates Hugo
   ├── .gitlab-ci.yml  # Pipeline CI/CD
   └── README.md       # Documentação principal
   ```

4. **Configuração de Acesso:**
   - Adicionar todos os membros como Maintainer
   - Adicionar professor como Reporter
   - Testar permissões

#### Critérios de Sucesso
- [ ] Grupo criado com nomenclatura correta
- [ ] Projeto configurado adequadamente
- [ ] Estrutura de pastas criada
- [ ] Permissões configuradas
- [ ] Acesso testado por todos

### Tarefa 3: Criação de Issues e Milestones

#### Objetivo
Organizar o trabalho em tarefas gerenciáveis.

#### Passos
1. **Definição de Milestones:**
   - **Sprint 1:** Estrutura básica (2 semanas)
   - **Sprint 2:** Funcionalidades principais (2 semanas)
   - **Sprint 3:** Refinamento e deploy (2 semanas)

2. **Criação de Issues:**
   - **Setup inicial:**
     - Configurar ambiente de desenvolvimento
     - Instalar bibliotecas (ex: python-telegram-bot) e dependências
     - Configurar tema básico
   
   - **Página principal:**
     - Layout responsivo
     - Navegação funcional
     - Seções definidas
   
   - **Páginas de perfil:**
     - Template de perfil
     - Formulário de contato
     - Galeria de projetos

3. **Organização:**
   - Associar issues aos milestones
   - Definir labels (feature, bug, task)
   - Atribuir responsáveis
   - Estimar esforço

#### Critérios de Sucesso
- [ ] Milestones criados com datas
- [ ] Issues detalhadas e organizadas
- [ ] Labels e assignees definidos
- [ ] Estrutura clara e compreensível

### Tarefa 4: Configuração de CI/CD

#### Objetivo
Implementar automação básica para o projeto.

#### Passos
1. **Criação do .gitlab-ci.yml:**
   ```yaml
   stages:
     - build
     - deploy
   
   build:
     stage: build
     image: registry.git.juninho.com.br/pages/hugo:latest
     script:
       - hugo
     artifacts:
       paths:
         - public
   
   deploy:
     stage: deploy
     script:
       - echo "Deploy to GitLab Pages"
   ```

2. **Configuração do GitLab Pages:**
   - Ativar Pages no projeto
   - Configurar domínio personalizado
   - Testar deploy automático

3. **Teste do Pipeline:**
   - Fazer commit de mudanças
   - Verificar execução do pipeline
   - Validar deploy automático

#### Critérios de Sucesso
- [ ] Pipeline configurado
- [ ] Deploy automático funcionando
- [ ] Site acessível via Pages
- [ ] Processo documentado

***

## 📖 Material de Apoio

### Recursos Necessários
- Acesso ao GitLab
- Computador com navegador
- Documentação da API
- Templates de Project Charter

### Templates Disponíveis
- [Template de Project Charter](#)
- [Guia de Configuração GitLab](#)
- [Exemplo de .gitlab-ci.yml](#)
- [Template de Issues](#)

***

## 📝 Avaliação

### Questionário Google Forms
- **Momento:** Final da aula
- **Objetivo:** Verificar compreensão dos conceitos
- **Conteúdo:** GitLab, Issues, Milestones, CI/CD
- **Link:** [Questionário da Aula 3](#)

### Critérios de Avaliação
- **Participação:** Engajamento nas atividades
- **Execução:** Conclusão das tarefas práticas
- **Compreensão:** Respostas no questionário
- **Organização:** Qualidade da documentação

***

## 🔗 Links Importantes

- [Questionário da Aula 3](#)
- [Template de Project Charter](#)
- [Guia de Configuração GitLab](#)
- [Documentação CI/CD](#)
- [GitLab da Disciplina](https://git.juninho.com.br)
- [Documentação da API](https://gohugo.io/documentation/)

***

## 📋 Próximos Passos

### Para os Alunos
- [ ] Finalizar configuração do repositório
- [ ] Completar Project Charter
- [ ] Organizar issues por sprint
- [ ] Testar pipeline CI/CD
- [ ] Responder questionário da aula

### Para a Próxima Aula
- **Aula 4:** Escopo e Cronograma
- **Foco:** Definição detalhada de escopo e cronograma
- **Pré-requisito:** Repositório configurado e issues criadas

***

## 📊 Checklist da Aula

### Professor
- [ ] Slides preparados
- [ ] Acesso ao GitLab verificado
- [ ] Templates disponíveis
- [ ] Questionário configurado

### Alunos
- [ ] Project Charter criado
- [ ] Repositório configurado
- [ ] Issues e milestones organizados
- [ ] Pipeline CI/CD funcionando
- [ ] Questionário respondido

***

## 🎯 Projeto Portfólio: Estrutura GitLab

### Organização Recomendada
```
portfolio-equipe/
├── docs/                    # Documentação do projeto
│   ├── project-charter.md   # Charter do projeto
│   ├── requirements.md      # Requisitos funcionais
│   └── architecture.md      # Arquitetura do sistema
├── src/                     # Código fonte
│   ├── content/            # Conteúdo do site
│   ├── layouts/            # Templates Hugo
│   └── static/             # Arquivos estáticos
├── .gitlab-ci.yml          # Pipeline CI/CD
├── README.md               # Documentação principal
└── .gitignore              # Arquivos ignorados
```

### Issues por Sprint
- **Sprint 1:** Setup e estrutura básica
- **Sprint 2:** Funcionalidades principais
- **Sprint 3:** Refinamento e deploy

***

*Próxima aula: Aula 4 - Escopo e Cronograma*
