Gerencia da Configuração de Software

 

Prof. Me. Samuel Rodrigues

Revisando os Conceitos...

Pergunta

Por que o sistema mudou?

Quais forma as mudanças?

O sistema continua funcionando depois das mudanças?

Atividade

Controle de Mudança

Controle de Versão

Integração Contínua

Atividades da GCS

Fluxo de trabalho Integrado

DevOps

Development

Operação

Desenvolvimento de Sistemas

Infraestrutura de TI

Remete ao fim da Separação entre Desenvolvimento e Operações

Cultura trabalho focado na automatização de processos de infra e de desenvolvimento, objetivando aumentar a capacidade do desenvolvimento e distribuição de aplicativos ou serviços em alta velocidade
 

  1. Continuous Integration
  2. Continuous Delivery
  3. Microservices
  4. Infrastructure as Code (IaC)
  5. Logging and Monitoring
  6. Communication and Collaboration

Práticas Integradas

  1. Velocidade de desenvolvimento e entrega rápida e contínua (XP/Agile)
  2. Confiabilidade
  3. Escala de processos de Infra e Dev
  4. Melhora na colaboração das equipes
  5. Segurança

Benefícios do Devops

Controle de Versão (Git, Mercurial, Subversion, Foundation)

Orquestração de Devops (Cerberon)

Provisionamento (Pupet Ansible Docker)

Integração/Entrega Contínua (Jenkins, Travis, Gitlab CI, Github Actions)

Depuração (Fabric, Capistrano)

Monitoramento (Splunk, Nagios, Loggly)

Controle de logs (Flume, ELK, Fluentd)

Ferramentas Devops

Integração Contínua

Continuous integration (CI) is a software development practice where
developers regularly merge their code changes into a central repository, after
which automated builds and tests are run
.

 

Amazon Web Series, 2017

CI most often refers to the build or
integration stage
of the software release process and requires both an automation component (e.g., a CI or build service) and a cultural component (e.g., learning to integrate frequently)

Amazon Web Series, 2017

Pilares Fundamentais

  • Sistema de Controle de Versão
  • Automatização de build
  • Self-testing build
  • Integração diária
  1. Encontrar e investigar bugs mais rapidamente;
  2. Melhorar a qualidade do software; e
  3. Reduzir o tempo que leva para validar e lançar novas atualizações de software.

Objetivos da CI

Benefícios da Integração Contínua

CI Workflow

CD extends CI

Continuous delivery (CD) is a software development practice where code
changes are automatically built, tested, and prepared
for production release

Amazon Web Series, 2017

CD != CD

Continuous Delivery

Continuous Deployment

continuous delivery is not to apply every change to
production immediately
, but to ensure that every change is ready to go to
production
.

Amazon Web Series, 2017

Qual a principal diferença?

CI/CD Pipeline

O que é GitHub Actions?

  • É uma ferramenta que permite automatizar fluxos de trabalho (workflow) de CI e CD dentro do próprio GitHub.
  • Você pode escrever tarefas individuais (actions) e combina-las para criar um workflow padronizado.

O GitHub Actions permite que você crie fluxos de trabalho personalizados de ciclo de vida de desenvolvimento de software (SDLC, Software Development Life Cycle) diretamente no seu repositório do GitHub.

GitHub, 2020

O que são workflows?

Workflows são processos automatizados que podem ser configurados em seu repositório para construir, testar, empacotar ou implantar qualquer projeto (no Github).

 

É basicamente, um pipeline CI/CD

Jobs

  • Uma séria de passos (steps) que podem ser executados no mesmo runner.
  • As regras de dependência entre eles são definidas no arquivo que define o workflow
  • Podem ser executados em paralelo eu sequencialmente dependendo do status do job anterior.

Runners

  • Qualquer máquina com GitHub Actions Runner Instalado
  • Responsável por executar seus jobs quando um de seus eventos é disparado
  • Podem ser hospedadas no GitHub (GitHub Runners) ou administradas externamente por você (Self-hosted Runners)

Runners

  • Os GitHub Runners pode ser Linux, Windows e MacOS.
    • Veja mais aqui.
  • Já possuiem software e ferramentas mais usadas instalados por padrão (não é possível configura-las)
    • Já possuem ferramentas e suporte a linguagens (Python, Ruby, nodejs), Android SDK e Xcode.
    • Veja mais aqui.
  • Self-Hosted Runners possibilitam mais controle do hardware, sistema operacional e ferramentas.

Vamos praticar um pouco

Vamos testar em um projeto

workflow do sucesso

workflow do sucesso

Muito Obrigado!

Gerência de Configuração de Software - Parte 3

By Samuel Rodrigues

Gerência de Configuração de Software - Parte 3

  • 198