diff --git a/README.md b/README.md index 6b25226..b456a1b 100644 --- a/README.md +++ b/README.md @@ -39,7 +39,8 @@ O que veremos essa semana? - [CI/CD:continuous integration e continuous delivery](./material/002-ci-cd.md) - [Componentes](./material/003-componentes.md) - [Serviços e Ferramentas](./material/004-servicos-e-ferramentas.md) - - [Inteligência Artificial (IA) e DevOps](./material/005-Inteligencia-artificial-e-devops.md) + - [Inteligência Artificial (IA) e DevOps](./material/005-Inteligencia-artificial-e-devops.md) + - [Git Flow vs Trunk Based](./material/006-gitflow-e-trunk-bases.md) - [Materiais](#materiais) - [PDF da Aula](./material/Aula_10_Metodologia_DevOps.pdf) @@ -57,15 +58,22 @@ O que veremos essa semana? --- ### Links Úteis -* https://www.redhat.com/pt-br/topics/devops -* https://www.redhat.com/pt-br/topics/devops/what-is-ci-cd -* https://gaea.com.br/devops-na-pratica-dia-a-dia-do-desenvolvedor/ +* [Introdução ao DevOps](https://www.redhat.com/pt-br/topics/devops) +* [O que é CI/CD?](https://www.redhat.com/pt-br/topics/devops/what-is-ci-cd) +* [DevOps na prática: dia a dia do desenvolvedor](https://gaea.com.br/devops-na-pratica-dia-a-dia-do-desenvolvedor/) +* [Testes de Software: Definição, Conceitos e Exemplos](https://www.objective.com.br/insights/testes-de-software/#:~:text=O%20que%20%C3%A9%20um%20teste,corretamente%20tudo%20que%20ele%20prop%C3%B5e) +* [Conheça a incrível história do DevOps](https://gaea.com.br/conheca-a-incrivel-historia-do-devops/#:~:text=O%20embri%C3%A3o%20da%20hist%C3%B3ria%20do,desenvolvimento%20e%20opera%C3%A7%C3%B5es%20de%20TI) +* [Por que o versionamento de software é tão importante?](https://www.locaweb.com.br/blog/temas/codigo-aberto/versionamento-de-software-importancia/) +* [Saiba tudo sobre o Gitflow Workflow](https://www.atlassian.com/br/git/tutorials/comparing-workflows/gitflow-workflow) +[Trunk-based development](https://www.atlassian.com/continuous-delivery/continuous-integration/trunk-based-development) + +### Links documentação de ferramentas: * https://backstage.io/ * https://helm.sh/docs/ * https://tekton.dev/docs/ -* https://www.objective.com.br/insights/testes-de-software/#:~:text=O%20que%20%C3%A9%20um%20teste,corretamente%20tudo%20que%20ele%20prop%C3%B5e -* https://gaea.com.br/conheca-a-incrivel-historia-do-devops/#:~:text=O%20embri%C3%A3o%20da%20hist%C3%B3ria%20do,desenvolvimento%20e%20opera%C3%A7%C3%B5es%20de%20TI -* https://www.locaweb.com.br/blog/temas/codigo-aberto/versionamento-de-software-importancia/ +* https://argoproj.github.io/cd/ +* [AWS Treinamento e Certificação](https://aws.amazon.com/pt/training/?nc2=type_a) + ### Livros

diff --git a/assets/Trunk-Based-Development.jpg b/assets/Trunk-Based-Development.jpg new file mode 100644 index 0000000..d9f1177 Binary files /dev/null and b/assets/Trunk-Based-Development.jpg differ diff --git a/assets/git-flow.png b/assets/git-flow.png new file mode 100644 index 0000000..43a8262 Binary files /dev/null and b/assets/git-flow.png differ diff --git a/material/004-servicos-e-ferramentas.md b/material/004-servicos-ferramentas-e-abordagens.md similarity index 98% rename from material/004-servicos-e-ferramentas.md rename to material/004-servicos-ferramentas-e-abordagens.md index 0001b9a..98155f2 100644 --- a/material/004-servicos-e-ferramentas.md +++ b/material/004-servicos-ferramentas-e-abordagens.md @@ -6,12 +6,13 @@ As ferramentas e serviços são essenciais para automatizar e integrar processos ### Controle de Versão -#### Git: +#### Git: + Sistema de controle de versão distribuído que permite que múltiplos desenvolvedores trabalhem em paralelo em um projeto. Git é a base para muitas outras ferramentas DevOps. GitHub, GitLab, Bitbucket: Plataformas baseadas em Git que oferecem repositórios de código, revisão de código, integração contínua, e outras funcionalidades colaborativas. -#### Integração Contínua / Entrega Contínua (CI/CD); +#### Integração Contínua / Entrega Contínua (CI/CD): Jenkins: Uma das ferramentas de CI/CD mais populares, Jenkins é altamente extensível e suporta uma ampla gama de plugins para automação de build, teste e deployment. @@ -81,7 +82,6 @@ AWS, Azure, Google Cloud Platform (GCP): Provedores de nuvem que oferecem uma am OpenStack: Plataforma de nuvem open-source que permite construir e gerenciar infraestruturas de nuvem privada e pública. - Enfim, existem uma infinidade de ferramentas no mercado atualmente, tando pagas quanto gratuítas, cada uma podendo ser usada em fases do processo. A imagem abaixo reflete um pouco disso. CI diff --git a/material/006-gitflow-e-trunk-bases.md b/material/006-gitflow-e-trunk-bases.md new file mode 100644 index 0000000..9fbe672 --- /dev/null +++ b/material/006-gitflow-e-trunk-bases.md @@ -0,0 +1,99 @@ +# GitFlow vs Trunk-Based + +## GitFlow + +CI + +É uma metodologia de modelo de branching que se tornou bastante popular por sua estruturação clara e por suportar um ciclo de desenvolvimento de software mais tradicional, com versões e releases definidos. Abaixo estão os principais aspectos do Git Flow: + +### Caracteristicas: + +#### Branches Principais: + +* Main (ou Master): Representa a versão estável e lançada do software. Somente código que está pronto para ser lançado entra na branch main. + +* Develop (ou Dev): É a branch onde o desenvolvimento principal ocorre. Funciona como uma "pré-release" onde o código é integrado e testado antes de ser mesclado na main. + +#### Branches de Suporte: + +* Feature Branches: Usadas para desenvolver novas funcionalidades. Elas partem da branch develop e são mescladas de volta nela quando a feature está pronta. +Nome típico: feature/nome-da-feature + +* Release Branches: Criadas a partir de develop quando o software está pronto para uma nova release. Essa branch permite ajustes finais, como correções de bugs ou pequenas melhorias antes do lançamento. +Nome típico: release/x.x.x + +* Hotfix Branches: Usadas para correções de emergência na branch main. Elas partem de main e, depois de aplicadas as correções, são mescladas de volta em main e develop. +Nome típico: hotfix/x.x.x + +### Fluxo de Trabalho + +* Início de uma nova feature: Cria-se uma branch a partir de develop.Desenvolvimento é feito na branch de feature. +Quando pronta, é mesclada de volta na develop. + +* Preparação para um lançamento: Cria-se uma branch de release a partir de develop. Ajustes finais e testes são feitos na branch de release. Uma vez estável, a branch de release é mesclada em main e develop. + +* Correção de um bug crítico (hotfix): Cria-se uma branch de hotfix a partir de main. A correção é aplicada e testada. +A branch de hotfix é mesclada em main (para o lançamento imediato) e develop (para garantir que a correção também exista no próximo ciclo de desenvolvimento). + +### Vantagens e Desvantagens do GitFlow + +#### Vantagens: + +* Estrutura clara que facilita o gerenciamento de versões e releases. +* Adequado para equipes que fazem releases periódicos e previsíveis. + +#### Desvantagens: + +* Pode ser complexo e pesado para projetos com ciclos de release rápidos ou contínuos. +* Exige muita criação e mesclagem de branches, o que pode ser confuso para equipes menores ou menos experientes. + +## Trunk-Based + +CI + +É uma abordagem mais simplificada e ágil para o gerenciamento de branches. Nesta abordagem, o foco é em integrar o código frequentemente em uma única branch principal (trunk ou main), minimizando a necessidade de branches de longa duração. + +### Caraceristicas: + +* Uma Única Branch Principal: Todo o desenvolvimento é feito na branch principal (trunk ou main). Novas features e correções de bugs são integradas diretamente na Branch Principal. + +* Feature Flags: Como o código é integrado frequentemente, recursos incompletos ou experimentais são frequentemente controlados por feature flags, permitindo que eles sejam ativados ou desativados sem a necessidade de criar branches separadas. + +* Commits Frequentes e Pequenos: Mudanças de código são feitas em pequenos incrementos e integradas na trunk o mais rápido possível. Isso minimiza os conflitos de merge e facilita o teste contínuo. + +* Integração Contínua: O processo de integração contínua (CI) é fundamental no Trunk-Based Development. Todo o código integrado na trunk deve passar por testes automatizados para garantir a estabilidade. + +#### Fluxo de Trabalho: + +* Início de uma nova feature: Pequenos commits são feitos diretamente na branch principal. Se a feature não estiver pronta para produção, ela é protegida por feature flags. + +* Correção de bugs: correções de bugs são feitas diretamente na trunk e implantadas imediatamente. + +* Release contínuo: Como o código é constantemente integrado e testado, o software pode ser liberado a qualquer momento. + +### Vantagens e Desvantagens do Trunk-Based: + +#### Vantagens: + +* Simplicidade: Menos complexidade em comparação com o Git Flow, com menos branches para gerenciar. +* Agilidade: Ideal para equipes que fazem deploy contínuo ou têm ciclos de release muito curtos. +* Redução de conflitos de merge: Como o código é integrado frequentemente, há menos chances de conflitos complexos. + +#### Desvantagens: + +* Pode ser arriscado para equipes que não têm uma boa cultura de integração contínua e testes automatizados. +* Requer disciplina para garantir que o código integrado na trunk esteja sempre em um estado de alta qualidade. + +### Quando Usar Cada Abordagem? + +* GitFlow: + + Melhor para projetos que seguem um ciclo de release mais tradicional, com lançamentos programados e versões definidas. + Útil em projetos onde a estabilidade da versão de produção é crítica e onde as equipes podem se dar ao luxo de trabalhar em branches separadas por longos períodos. + +* Trunk-Based Development: + + Ideal para equipes ágeis que fazem deploys contínuos ou muito frequentes. + Adequado para ambientes de desenvolvimento onde a integração contínua e os testes automatizados são bem estabelecidos. + +Cada abordagem tem seus próprios méritos, e a escolha entre Git Flow e Trunk-Based Development deve ser baseada no estilo de trabalho da equipe, na complexidade do projeto e nas práticas de deploy e release adotadas pela organização. \ No newline at end of file diff --git a/material/Aula_10_Metodologia_DevOps.pdf b/material/Aula_10_Metodologia_DevOps.pdf index 4f78992..d2a520d 100644 Binary files a/material/Aula_10_Metodologia_DevOps.pdf and b/material/Aula_10_Metodologia_DevOps.pdf differ