-
Notifications
You must be signed in to change notification settings - Fork 46
Integração Contínua Deploy Contínuo
GitHub, de Janeiro a Setembro de 2012 foram realizados 41.679 builds e 12.602 deploys sendo somente no dia 23 de agosto de 2012 realizados 563 builds e 175 deploys.
A Amazon uma das maiores varejistas do mundo com serviços de cloud realiza o deploy de um novo software a cada segundo.
O Facebook, visando o tamanho e o impacto que ele oferece atualmente, possui um departamento de release engineering desde 2008 com o objetivo de realizar uma liberação por dia como melhorias e novas funcionalidades. Com o novo escritório de engenharia em Londres, tinha como objetivo dobrar o número de deploys.
Durante o desenvolvimento de um software, seus conjuntos de procedimentos e devido a presença de uma equipe que se constitui de diversos integrantes trabalhando e fazendo o controle de versionamento em um repositório, surge a necessidade de tratar erros e manter cada build da aplicação coesa através da utilização de um dos maiores pilares do desenvolvimento ágil, a integração contínua. A integração é responsável por garantir o funcionamento do código através de feedbacks ainda que o mesmo esteja sendo alterado simultaneamente, agilizando e facilitando a resposta da equipe com relação a possíveis problemas com a criação de outras funcionalidades e contribuindo para a redução do tempo gasto com testes, pois será necessário que o programador teste somente a nova funcionalidade implementada enquanto o servidor da integração contínua fica responsável por realizar os testes do sistema e garantir sua funcionalidade. Ela permite melhor visibilidade do projeto.
A Integração Contínua ajuda a construir confiança para inovar novas melhorias. Os projetos sofrem quando não há dados reais ou recentes para apoiar as decisões. Normalmente, os membros da equipe agrupam essas informações manualmente, exigindo tempo e esforço. O resultado é que muitas vezes a informação relevante nunca é coletada. Desse modo a integração facilita fazendo com que a equipe tome decisões eficazes fornecendo informações sobre o status de construção e métricas de qualidade do código e geralmente projetos que não abraçam essas abordagens são propensos a lançamentos atrasados.
- Vantagens da integração contínua:
- Feedback instantâneo
- Segurança em relação a mudanças
- Agilidade para correção de problemas
- Automação
- Sincronização
- Envio do código atualizado para o repositório com o código fonte.
- Um sistema automatizado observa o sistema de controle de versão.
- O sistema automatizado compila o código;
- O sistema automatizado executa os testes unitários;
- O sistema automatizado envia o feedback para que os membros da equipe possam conhecer o estado atual da build.
Totalmente automatizado: uma mudança no código é automaticamente verificada e, se tudo estiver certo, a aplicação vai para produção;
Semi-automatizado: a ideia é ser capaz de empurrar para produção a última versão estável do aplicativo em qualquer momento apenas apertando um botão. Nesse caso, chamamos de “one-click-deployment”.
- Incluir descrição do treinamento/DOJO - passo a passo - etapas
- Registrar os detalhes da dinâmica
- Infraestrutura Necessária para a dinâmica
- Código referência no projeto da disciplina (00-Disciplina)
- Treinamento em, pelo menos 2 linguagens
Um processo de Deploy Contínuo (“Continuous Deploy”) é a capacidade de automatizar a homologação e testes do software de um produto desenvolvido de forma automática e rápida, onde a cada alteração significativa seja possível rodar toda a integração contínua, validar o produtos e suas credencias e deixa-lo disponível para produção. Esse processo geralmente é classificado dentro de duas vertentes, que variam de acordo com as capacidades de cada projeto e seus requisitos:
Antes de configurar a task, voce deve adiquirir o serviceAccountEmail e o jsonFile como descrito no Tutorial de Deploy Automatico na Google Play PDF
O ${track} foi configurado como uma variavel de ambiente do gradle no script do circle ci, para especificar se é uma build de produção que vai para a play store ou uma build de testes que vai para emails selecionados.
play {
track = "${track}"
serviceAccountEmail = 'example@mail'
jsonFile = file('/path/to/uknonwnfile.json') //renomeie o file com a extensao .json
}
Basicamente, sua ferramenta de integração contínua deverá gerar a build do produto, rodando os testes unitários e de aceitação, ou quaisquer outras medidas de validação do seu produto e de acordo com o configurado, podendo ser por commit ou push em uma branch específica ele irá enviar o seu aplicativo para ser publicado na loja de acordo com suas configurações ou para beta ou para distribuição de produção.
EPS/MDS - FGA/UnB
Métodos de Desenvolvimento de Software
Gestão de Portfólio e Projetos de Software
RUP (Rational Unified Process)
Fase Elaboração (RUP) Planejamento(PMBOK)
Fase de Construção (RUP), Execução/Monitoramente e Controle (PMBOK)
Fase Transição (RUP), Finalização (PMBOK)
Acceptance Test Driven Development (ATDD)
Integração Contínua Deploy Contínuo
Automação de Ambiente com Docker
Orquestração de Containers com Docker Compose
Automação de Ambiente com Vagrant
Deploy Contínuo na Plataforma Heroku
Integração Contínua com Travis CI
Disponibilizando a Aplicação com o Proxy Reverso Nginx
Tutorial de Instalação do Ionic
Android Integração contínua com Circle CI
Configuração de Ambiente para React Native
Tutorial Instalação Ruby on Rails
Teste Automatizado Cucumber JS
Teste Automatizado Cucumber Rails
Testando AngularJS com Jasmine
Teste Automatizado com Selenium IDE
Configurar o SonarCloud para um projeto usando Jest
Configurar o SonarCloud para um projeto usando Pytest
Configurar o SonarCloud para um projeto usando Mocha e Istambul