# Aula 9: Sprint 1 e CI/CD

**Data:** 30/10/2025  
**Módulo:** 3 - Gestão Ágil e Execução  
**Duração:** 90 minutos  
**Tipo:** Teórico-Prática

***

## 📋 Resumo Executivo

Esta aula marca o início da execução prática do projeto Assistente IA usando metodologias ágeis. Os alunos implementarão o primeiro sprint completo, desde o planejamento até a entrega, utilizando o GitLab como ferramenta de gestão. Além disso, serão introduzidos os conceitos fundamentais de CI/CD (Integração Contínua e Entrega Contínua) e sua implementação prática com Hugo para geração automática do site.

***

## 🎯 Objetivos da Aula

### Objetivos Gerais
- Executar o primeiro sprint completo do projeto Assistente IA
- Implementar práticas ágeis com GitLab
- Configurar pipeline de CI/CD
- Entregar incremento funcional do produto

### Objetivos de Aprendizagem
- Compreender execução prática de sprints
- Dominar ferramentas ágeis do GitLab
- Implementar CI/CD com GitLab
- Configurar automação de build e deploy
- Entregar software funcionando

***

## ⏰ Cronograma da Aula

| Tempo | Atividade | Descrição |
|-------|-----------|-----------|
| **15 min** | **Revisão e Contexto** | Revisão da aula anterior e preparação para Sprint 1 |
| **25 min** | **Execução do Sprint 1** | Planejamento, desenvolvimento e entrega do primeiro sprint |
| **30 min** | **CI/CD e Automação** | Conceitos e implementação de pipeline de CI/CD |
| **20 min** | **Deploy e Validação** | Deploy automático e validação do incremento |

***

## 📚 Conteúdo Teórico

### 1. Execução Prática de Sprints

#### Sprint 1: Estrutura e Setup
**Objetivo:** Estabelecer a base técnica e organizacional do projeto

**Duração:** 2-3 semanas (adaptado para contexto acadêmico)

**Entregas Esperadas:**
- Ambiente de desenvolvimento configurado
- Estrutura básica do projeto (Bot/API)
- Página inicial funcional
- Navegação básica implementada
- Configuração inicial do GitLab

#### Planejamento do Sprint 1
**Sprint Planning (2 horas):**
1. **Revisão do Product Backlog**
   - Priorização de itens
   - Refinamento de histórias
   - Estimativas de esforço

2. **Seleção de Itens**
   - Capacidade da equipe
   - Dependências técnicas
   - Critérios de aceitação

3. **Definição do Sprint Backlog**
   - Decomposição em tarefas
   - Atribuição de responsáveis
   - Estimativas detalhadas

#### Execução do Sprint
**Daily Scrum (15 min diários):**
- Sincronização da equipe
- Identificação de impedimentos
- Ajustes no plano

**Desenvolvimento:**
- Implementação de funcionalidades
- Testes contínuos
- Integração de código
- Documentação

#### Revisão e Retrospectiva
**Sprint Review (1 hora):**
- Demonstração do incremento
- Feedback dos stakeholders
- Validação de critérios de aceitação

**Sprint Retrospective (1 hora):**
- Análise do processo
- Identificação de melhorias
- Plano de ações

### 2. GitLab como Ferramenta Ágil

#### Issues e User Stories
**Formato de User Story:**
```
Como [usuário], eu quero [funcionalidade] para [benefício]
```

**Critérios de Aceitação:**
- Funcionalidade específica e testável
- Condições de sucesso claras
- Cenários de teste definidos

**Exemplo para o projeto Assistente IA:**
```
Como visitante do site, eu quero navegar pelas páginas 
para conhecer os membros da equipe

Critérios de Aceitação:
- Menu de navegação visível
- Links funcionais entre páginas
- Design responsivo
- Tempo de carregamento < 3 segundos
```

#### Milestones e Sprints
**Configuração de Milestones:**
- Duração: 2-3 semanas
- Objetivo específico
- Issues associadas
- Data de início e fim

**Exemplo Sprint 1:**
- **Nome:** Setup e Estrutura Básica
- **Duração:** 3 semanas
- **Objetivo:** Estabelecer base técnica do projeto
- **Issues:** 8-10 user stories

#### Boards Kanban
**Configuração do Board:**
- **To Do:** Histórias não iniciadas
- **In Progress:** Em desenvolvimento
- **Review:** Em revisão/teste
- **Done:** Concluídas e validadas

**WIP Limits:**
- To Do: Sem limite
- In Progress: Máximo 2 por pessoa
- Review: Máximo 3
- Done: Sem limite

### 3. Integração Contínua e Entrega Contínua (CI/CD)

#### Conceitos Fundamentais

**Integração Contínua (CI):**
- Integração frequente de código
- Builds automáticos
- Testes automatizados
- Detecção precoce de problemas

**Entrega Contínua (CD):**
- Deploy automático
- Ambientes de teste
- Rollback automático
- Entrega confiável

#### Benefícios do CI/CD
- **Qualidade:** Detecção precoce de bugs
- **Velocidade:** Deploy mais rápido
- **Confiabilidade:** Processo padronizado
- **Colaboração:** Integração contínua
- **Feedback:** Validação imediata

#### Pipeline de CI/CD
**Estágios do Pipeline:**
1. **Build:** Compilação e preparação
2. **Test:** Execução de testes
3. **Deploy:** Publicação em ambiente
4. **Verify:** Validação da entrega

### 4. CI/CD com GitLab

#### GitLab CI/CD
**Características:**
- Pipeline integrado
- Executores configuráveis
- Ambientes múltiplos
- Integração com GitLab

**Arquivo .gitlab-ci.yml:**
```yaml
stages:
  - build
  - test
  - deploy

build:
  stage: build
  script:
    - pytest
  artifacts:
    paths:
      - public/

deploy:
  stage: deploy
  script:
    - rsync -av public/ $DEPLOY_PATH
  only:
    - main
```

#### Configuração para Hugo
**Build do Site:**
- Instalação das bibliotecas da API
- Geração do bot de chat
- Minificação de assets
- Otimização de imagens

**Deploy Automático:**
- Upload para servidor
- Configuração de domínio
- SSL automático
- Cache de CDN

### 5. Integração de APIs de Inteligência Artificial

#### Características da API de IA
- **Velocidade:** Build extremamente rápido
- **Simplicidade:** Sintaxe Markdown
- **Flexibilidade:** Temas e layouts
- **Performance:** Sites estáticos otimizados

#### Estrutura do Projeto do Bot
```
portfolio/
├── archetypes/
├── content/
│   ├── about/
│   ├── projects/
│   └── _index.md
├── data/
├── layouts/
├── static/
├── themes/
├── config.toml
└── .gitlab-ci.yml
```

#### Configuração Básica
**config.toml:**
```toml
baseURL = "https://portfolio.cefetmg.br"
languageCode = "pt-br"
title = "Portfólio da Equipe"
import google.generativeai as genai

[params]
  description = "Portfólio dos alunos de Engenharia de Computação"
  author = "Equipe Portfólio"
```

***

## 🛠️ Atividades Práticas

### Tarefa 1: Sprint Planning do Sprint 1

#### Objetivo
Planejar o primeiro sprint do projeto Assistente IA

#### Passos
1. **Preparação do Product Backlog:**
   - Criar issues no GitLab
   - Definir user stories
   - Estabelecer critérios de aceitação
   - Priorizar itens

2. **Sprint Planning:**
   - Selecionar itens para o sprint
   - Estimar esforço das tarefas
   - Atribuir responsáveis
   - Definir objetivo do sprint

3. **Configuração do Board:**
   - Criar milestone para Sprint 1
   - Configurar board Kanban
   - Estabelecer WIP limits
   - Organizar issues

#### Critérios de Sucesso
- [ ] Product Backlog criado com 15+ user stories
- [ ] Sprint 1 planejado com 8-10 itens
- [ ] Board Kanban configurado
- [ ] Objetivo do sprint definido

### Tarefa 2: Desenvolvimento do Sprint 1

#### Objetivo
Implementar as funcionalidades planejadas no Sprint 1

#### Passos
1. **Setup do Ambiente:**
   - Instalar bibliotecas (ex: python-telegram-bot)
   - Configurar tema
   - Estrutura de pastas
   - Configuração inicial

2. **Desenvolvimento:**
   - Página inicial
   - Navegação básica
   - Layout responsivo
   - Conteúdo inicial

3. **Testes:**
   - Validação local
   - Testes de responsividade
   - Verificação de links
   - Performance básica

#### Critérios de Sucesso
- [ ] Bot respondendo localmente
- [ ] Página inicial implementada
- [ ] Navegação funcional
- [ ] Design responsivo

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

#### Objetivo
Implementar pipeline de CI/CD para deploy automático

#### Passos
1. **Configuração do Pipeline:**
   - Criar arquivo .gitlab-ci.yml
   - Configurar stages
   - Definir scripts de build
   - Configurar deploy

2. **Teste do Pipeline:**
   - Commit inicial
   - Verificação do build
   - Teste de deploy
   - Validação do site

3. **Otimização:**
   - Cache de dependências
   - Paralelização de jobs
   - Notificações
   - Monitoramento

#### Critérios de Sucesso
- [ ] Pipeline configurado
- [ ] Build automático funcionando
- [ ] Deploy automático ativo
- [ ] Site acessível online

### Tarefa 4: Sprint Review e Retrospectiva

#### Objetivo
Avaliar o sprint e identificar melhorias

#### Passos
1. **Sprint Review:**
   - Demonstração do incremento
   - Feedback dos stakeholders
   - Validação de critérios
   - Ajustes no backlog

2. **Sprint Retrospective:**
   - Análise do processo
   - Identificação de problemas
   - Sugestões de melhorias
   - Plano de ações

3. **Documentação:**
   - Registro de lições aprendidas
   - Atualização de processos
   - Preparação para próximo sprint
   - Métricas de performance

#### Critérios de Sucesso
- [ ] Incremento demonstrado
- [ ] Feedback coletado
- [ ] Retrospectiva realizada
- [ ] Melhorias identificadas

***

## 📖 Material de Apoio

### Recursos Necessários
- GitLab CI/CD Documentation
- Hugo Documentation
- Scrum Guide
- Templates de user stories

### Templates Disponíveis
- [Template de User Story](#)
- [Template de Sprint Planning](#)
- [Template de .gitlab-ci.yml](#)
- [Template de config.toml](#)

***

## 📝 Avaliação

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

### Critérios de Avaliação
- **Execução:** Qualidade do Sprint 1
- **Implementação:** Funcionamento do CI/CD
- **Colaboração:** Trabalho em equipe
- **Entrega:** Incremento funcional

***

## 🔗 Links Importantes

- [Questionário da Aula 9](#)
- [GitLab CI/CD Documentation](https://docs.gitlab.com/ee/ci/)
- [Hugo Documentation](https://gohugo.io/documentation/)
- [Scrum Guide](https://scrumguides.org/)
- [GitLab da Disciplina](https://git.juninho.com.br)

***

## 📋 Próximos Passos

### Para os Alunos
- [ ] Completar Sprint 1
- [ ] Configurar CI/CD
- [ ] Entregar incremento funcional
- [ ] Preparar Sprint 2
- [ ] Responder questionário da aula

### Para a Próxima Aula
- **Aula 10:** Modelos Ágeis Alternativos
- **Foco:** Kanban, XP, Lean
- **Pré-requisito:** Sprint 1 concluído

***

## 📊 Checklist da Aula

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

### Alunos
- [ ] Sprint 1 planejado
- [ ] Desenvolvimento iniciado
- [ ] CI/CD configurado
- [ ] Incremento entregue
- [ ] Questionário respondido

***

## 🎯 Projeto Portfólio: Sprint 1

### Objetivo do Sprint
Estabelecer a base técnica e organizacional do projeto Assistente IA

### Entregas Planejadas
- **Setup do Bot:** Ambiente de desenvolvimento configurado
- **Página Inicial:** Layout e conteúdo básico
- **Navegação:** Menu e estrutura de páginas
- **CI/CD:** Pipeline de deploy automático
- **Documentação:** Guias de uso e contribuição

### Métricas de Sucesso
- **Velocidade:** 8-10 story points
- **Qualidade:** 0 bugs críticos
- **Deploy:** Site acessível online
- **Feedback:** Stakeholders satisfeitos

### Próximo Sprint
- **Sprint 2:** Páginas de Perfil
- **Foco:** Conteúdo individual dos membros
- **Duração:** 3 semanas

***

*Próxima aula: Aula 10 - Modelos Ágeis Alternativos*
