Gabarito - Aula 9: Sprint 1 e CI/CD
Questões Teóricas
1. Explique a diferença entre Integração Contínua e Entrega Contínua.
Resposta: - Integração Contínua (CI): Prática de integrar código frequentemente (múltiplas vezes por dia) em um repositório compartilhado, com builds e testes automáticos para detectar problemas rapidamente.
- Entrega Contínua (CD): Extensão da CI que automatiza o processo de deploy, garantindo que o código possa ser entregue em produção a qualquer momento de forma segura e confiável.
Diferença principal: CI foca na integração e validação do código, enquanto CD foca na entrega automatizada e confiável.
2. Quais são os benefícios de usar CI/CD em projetos de software?
Resposta: - Qualidade: Detecção precoce de bugs e problemas - Velocidade: Deploy mais rápido e frequente - Confiabilidade: Processo padronizado e repetível - Colaboração: Integração contínua entre desenvolvedores - Feedback: Validação imediata de mudanças - Redução de riscos: Deploys menores e mais frequentes - Automação: Redução de erros humanos
3. Descreva os estágios típicos de um pipeline de CI/CD.
Resposta: 1. Build: Compilação e preparação do código 2. Test: Execução de testes automatizados 3. Deploy: Publicação em ambiente de destino 4. Verify: Validação da entrega e funcionamento
Estágios adicionais podem incluir: - Lint: Análise estática de código - Security: Verificação de vulnerabilidades - Performance: Testes de performance - Integration: Testes de integração
4. Como o GitLab facilita a implementação de práticas ágeis?
Resposta: - Issues: Gestão de user stories e tarefas - Milestones: Organização de sprints - Boards Kanban: Visualização do fluxo de trabalho - CI/CD integrado: Pipeline automático - Merge Requests: Revisão de código - Wiki: Documentação colaborativa - Time tracking: Controle de tempo - Labels: Categorização de issues
Questões Práticas
5. Como configurar um pipeline de CI/CD para um site Hugo?
Resposta:
# .gitlab-ci.yml
stages:
- build
- test
- deploy
build:
stage: build
script:
- hugo --minify
artifacts:
paths:
- public/
test:
stage: test
script:
- hugo --minify --quiet
only:
- merge_requests
deploy:
stage: deploy
script:
- rsync -av public/ $DEPLOY_PATH
only:
- mainPassos: 1. Criar arquivo .gitlab-ci.yml na raiz do projeto 2. Configurar stages (build, test, deploy) 3. Definir scripts para cada stage 4. Configurar variáveis de ambiente 5. Testar o pipeline
6. Quais são os elementos essenciais de uma user story bem escrita?
Resposta: - Formato padrão: “Como [usuário], eu quero [funcionalidade] para [benefício]” - Critérios de aceitação: Condições específicas e testáveis - Estimativa: Pontos de story ou horas - Prioridade: Nível de importância - Dependências: Relacionamentos com outras stories - Labels: Categorização (bug, feature, enhancement)
Exemplo:
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
7. Como realizar um sprint planning eficaz?
Resposta: Preparação: - Product Backlog refinado - Estimativas atualizadas - Capacidade da equipe definida
Processo: 1. Revisão do backlog: Priorização e refinamento 2. Seleção de itens: Baseada na capacidade da equipe 3. Decomposição: Breaking down em tarefas 4. Estimativas: Esforço e complexidade 5. Atribuição: Responsáveis por cada tarefa 6. Objetivo: Definição clara do sprint goal
Ferramentas: - Planning poker para estimativas - Board Kanban para visualização - Burndown chart para acompanhamento
8. Quais métricas são importantes para avaliar o sucesso de um sprint?
Resposta: Métricas de Velocidade: - Story points entregues - Número de user stories completadas - Burndown rate
Métricas de Qualidade: - Bugs encontrados - Defeitos em produção - Cobertura de testes
Métricas de Processo: - Tempo de ciclo - Lead time - Throughput
Métricas de Equipe: - Satisfação da equipe - Impedimentos resolvidos - Colaboração
Métricas de Negócio: - Satisfação do cliente - Valor entregue - ROI do sprint
Questões de Aplicação
9. Descreva como você implementaria o Sprint 1 do projeto Portfólio.
Resposta: Objetivo: Estabelecer base técnica e organizacional
User Stories: 1. Como desenvolvedor, eu quero configurar o ambiente Hugo para começar o desenvolvimento 2. Como visitante, eu quero ver uma página inicial atrativa para conhecer o projeto 3. Como usuário, eu quero navegar entre páginas para acessar diferentes seções 4. Como desenvolvedor, eu quero CI/CD configurado para deploy automático
Tarefas: - Setup do ambiente Hugo - Configuração do tema - Criação da página inicial - Implementação da navegação - Configuração do pipeline CI/CD - Testes e validação
Critérios de Sucesso: - Site funcionando localmente - Deploy automático ativo - Navegação funcional - Design responsivo
10. Explique como o Hugo se integra com o pipeline de CI/CD.
Resposta: Integração: - Hugo gera sites estáticos otimizados - Build rápido e eficiente - Output em pasta public/ - Compatível com deploy automático
Pipeline: 1. Build: hugo --minify gera o site 2. Test: Validação do build 3. Deploy: Upload da pasta public/ 4. Verify: Teste do site online
Vantagens: - Build extremamente rápido - Sites otimizados para performance - Deploy simples (apenas arquivos estáticos) - Compatível com CDN e cache
Configuração:
build:
script:
- hugo --minify
artifacts:
paths:
- public/Questões de Análise
11. Analise os benefícios de usar metodologias ágeis em projetos acadêmicos.
Resposta: Benefícios: - Aprendizado prático: Experiência real com metodologias - Colaboração: Trabalho em equipe efetivo - Iteração: Melhoria contínua do projeto - Transparência: Visibilidade do progresso - Adaptação: Flexibilidade para mudanças
Desafios: - Tempo limitado: Sprints adaptados ao calendário acadêmico - Experiência: Curva de aprendizado inicial - Recursos: Limitações de infraestrutura - Avaliação: Métricas adaptadas ao contexto
Adaptações necessárias: - Sprints de 2-3 semanas - Foco em aprendizado - Métricas simplificadas - Retrospectivas educativas
12. Compare as vantagens e desvantagens de sites estáticos vs dinâmicos para o projeto Portfólio.
Resposta: Sites Estáticos (Hugo): - Vantagens: Performance, segurança, simplicidade, deploy fácil - Desvantagens: Limitações de interatividade, atualizações manuais
Sites Dinâmicos: - Vantagens: Interatividade, atualizações em tempo real, funcionalidades avançadas - Desvantagens: Complexidade, performance, segurança, manutenção
Para o projeto Portfólio: - Estático é ideal: Conteúdo relativamente estático, foco em performance - Benefícios: Deploy simples, segurança, velocidade - Limitações: Menos interatividade (aceitável para portfólio)
Questões de Síntese
13. Sintetize os principais conceitos aprendidos nesta aula.
Resposta: Conceitos principais: 1. Execução de Sprints: Planejamento, desenvolvimento, revisão, retrospectiva 2. GitLab como ferramenta ágil: Issues, milestones, boards, CI/CD 3. CI/CD: Integração contínua, entrega contínua, pipelines 4. Hugo: Gerador de sites estáticos, performance, simplicidade
Aplicação prática: - Sprint 1 do projeto Portfólio - Configuração de pipeline CI/CD - Deploy automático - Entrega de incremento funcional
Benefícios: - Qualidade de software - Velocidade de entrega - Colaboração efetiva - Aprendizado prático
14. Como você aplicaria os conceitos de CI/CD em outros projetos?
Resposta: Aplicação geral: - Qualquer projeto de software: Build, test, deploy automático - Projetos web: Deploy automático em servidores - Aplicações mobile: Build e distribuição automática - APIs: Deploy e testes automatizados
Configuração básica: 1. Repositório: Git com branches 2. Pipeline: Build, test, deploy 3. Ambientes: Desenvolvimento, teste, produção 4. Monitoramento: Logs e métricas
Benefícios: - Qualidade consistente - Deploy confiável - Feedback rápido - Colaboração eficiente
15. Descreva como você faria a transição de um projeto tradicional para metodologia ágil.
Resposta: Planejamento da transição: 1. Análise do projeto atual: Estrutura, processos, equipe 2. Definição de objetivos: O que se quer alcançar 3. Treinamento da equipe: Conceitos ágeis, ferramentas 4. Piloto: Projeto pequeno para teste 5. Iteração: Ajustes baseados em feedback
Passos práticos: - Backlog: Conversão de requisitos em user stories - Sprints: Divisão do trabalho em iterações - Cerimônias: Implementação de reuniões ágeis - Ferramentas: Adoção de GitLab, boards, etc. - Métricas: Definição de KPIs ágeis
Desafios e soluções: - Resistência: Comunicação e treinamento - Processos: Adaptação gradual - Ferramentas: Migração incremental - Cultura: Mudança de mindset
Notas para o Professor
Pontos de Atenção
- Enfatizar a diferença entre CI e CD
- Destacar a importância da automação
- Relacionar conceitos com prática real
- Focar na aplicação em projetos acadêmicos
Sugestões de Discussão
- Experiências com CI/CD
- Desafios na implementação ágil
- Comparação com metodologias tradicionais
- Benefícios para carreira profissional
Recursos Adicionais
- Documentação do GitLab CI/CD
- Exemplos de pipelines
- Casos de uso reais
- Ferramentas alternativas