Upload
andre-minelli
View
105
Download
3
Embed Size (px)
Citation preview
Deploy Automatizado Por que?
◦Fim de roteiro de instalação manual◦Reduz dependência de especialistas e/ou ‘super usuários’
Deploy Automatizado Por que?
◦Fim de roteiro de instalação manual◦Reduz dependência de especialistas e/ou ‘super usuários’◦Reduz chance de erros humanos
Deploy Automatizado Por que?
◦Fim de roteiro de instalação manual◦Reduz dependência de especialistas e/ou ‘super usuários’◦Reduz chance de erros humanos◦Mais velocidade
Deploy Automatizado Por que?
◦Fim de roteiro de instalação manual◦Reduz dependência de especialistas e/ou ‘super usuários’◦Reduz chance de erros humanos◦Mais velocidadeEFIC
IÊNCIA
Deploy Automatizado
◦ Se o risco é baixo, o medo é reduzido◦ Se o medo é reduzido, a frequencia pode aumentar
Deploy Automatizado
◦ Se o risco é baixo, o medo é reduzido◦ Se o medo é reduzido, a frequencia pode aumentar◦ Se a frequencia aumenta, mais valor (features e correções)
podem ser entregues mais rapidamente
Deploy Automatizado
◦ Se o risco é baixo, o medo é reduzido◦ Se o medo é reduzido, a frequencia pode aumentar◦ Se a frequencia aumenta, mais valor (features e correções)
podem ser entregues mais rapidamente◦ Se valor pode ser entregue mais rapidamente, meus clientes
ficarão felizes mais rápido
Deploy Automatizado
◦ Se o risco é baixo, o medo é reduzido◦ Se o medo é reduzido, a frequencia pode aumentar◦ Se a frequencia aumenta, mais valor (features e correções)
podem ser entregues mais rapidamente◦ Se valor pode ser entregue mais rapidamente, meus clientes
ficarão felizes mais rápido◦ Clientes felizes significa que o negócio continuará crescendo
Deploy Automatizado Intimamente ligado à Agile / Lean:
Somente quando o usuário usa o produto teremos seu feedback!
Deploy Automatizado Benefícios adicionais:◦Rollback simplificado◦Ambientes adicionais (homologação, staging, etc) facilmente criados
Deploy Automatizado Benefícios adicionais:◦Rollback simplificado◦Ambientes adicionais (homologação, staging, etc) facilmente criados
◦Contribui para Disaster Recovery
Deploy Automatizado Benefícios adicionais:◦Rollback simplificado◦Ambientes adicionais (homologação, staging, etc) facilmente criados
◦Contribui para Disaster Recovery◦Registro das mudanças aplicadas
Deploy Automatizado◦Passo crucial para Continuous Delivery
◦Capacidade de fazer deploy a cada mudança◦Quais mudanças entrarão em produção é uma escolha
◦Pré-requisito para Continous Deployment◦Toda mudança é automaticamente publicada em produção
Deploy Automatizado Necessário COMPROMISSO do time:
Nenhuma alteração do servidor deve ser feita manualmente!
Octopus Deploy Servidor de automated deployment Focado em (mas não limitado a):
◦ .NET◦ Windows
Servidor◦ Gerencia configurações ◦ Registra histórico e logs◦ Repositório de packages
Tentáculos◦ Executam as etapas do processo de deploy◦ Windows Service em cada servidor (target)
Octopus Deploy x TeamCity Octopus complementa continuous building◦TeamCity (ou outro Build Server):◦compila, testa e analisa código◦produz artefatos aprovados
◦Octopus◦Distribui e instala artefatos◦Aplica configurações específicas do ambiente
Octopus Deploy – Boas práticas◦Artefato é construído uma única vez◦Todos os ambientes recebem o mesmo binário
Octopus Deploy – Boas práticas◦Artefato é construído uma única vez◦Todos os ambientes recebem o mesmo binário
◦Valores de configuração não fazem parte do repositório◦Devem ser definidos em deploy time
Octopus Deploy – Boas práticas◦Artefato é construído uma única vez e empacotado◦Todos os ambientes recebem o mesmo binário
◦Valores de configuração não fazem parte do repositório◦Devem ser definidos em deploy time
◦Processo de deploy deve ser igual (ou MUITO parecido) em todos os ambientes
Octopus Deploy – Integração TeamCity◦ .Net
◦ Gere Nuget packages◦ Install-Package OctoPack
◦ No build step da solution:◦ Marque “Run OctoPack”◦ OctoPack package version: %build.number%
◦Recomendado: ◦ Em Build Feature: ◦AssemblyInfo patcher (com mesmo %build.number%)
Octopus Deploy – Integração TeamCity◦Outros projetos: use artefatos zipados
◦ Em General Settings, configure Artifact paths◦ Ex: dist => %PackageName%.zip
◦Salve zip no repositório do Octopus◦ Build step OctopusDeploy: Push packages
◦ Utilize parâmetro global OctopusUrl◦ Crie sua API Key no Profile do usuário do Octopus
Octopus Deploy – Integração TeamCity◦ Crie release no Octopus
◦ Build step “OctopusDeploy: Create Release”◦ Utilize parâmetro global OctopusUrl ◦ Additional command line arguments--Packageversion=%build.number%
◦Recomendado◦ Criar release notes a partir dos commits ou do backlog
◦ Adicione antes o build step “ReleaseNotesFromVso”◦ Adicione nos argumentos da linha de comando para criar a release--ReleaseNotesFile="%system.teamcity.build.tempDir%\releasenotesfile_%teamcity.build.id%_%build.number%.txt“
Octopus Deploy – Configuração Básica Ambientes
◦Máquinas ◦Papéis
Projetos◦Parte de Grupo de Projetos◦Lifecycle ◦Process◦Variables
Octopus Deploy – Configurações de ambientes◦Tentáculo – utilize ‘Listening Tentacle’ ◦Roles – baseado em função
◦ Não é ambiente◦ Não é versão de S.O.
◦Mesma máquina pode fazer parte de mais de um ambiente
Octopus Deploy – Configurações de projetos
Dica:◦ Processo em 3 ‘etapas’:
1. Configurar/verificar ambiente/SO◦ Windows Features, Firewall, Certificados, etc ◦ Obs: trabalho para Chef / Puppet / etc
Octopus Deploy – Configurações de projetos
Dica:◦ Processo em 3 ‘etapas’:
1. Configurar/verificar ambiente/SO◦ Windows Features, Firewall, Certificados, etc ◦ Obs: trabalho para Chef / Puppet / etc
2. Instalação propriamente dita◦ Baixar package e aplicar configurações◦ Configurar serviços, sites, tarefas agendadas, etc
Octopus Deploy – Configurações de projetos
Dica:◦ Processo em 3 ‘etapas’:
1. Configurar/verificar ambiente/SO◦ Windows Features, Firewall, Certificados, etc ◦ Obs: trabalho para Chef / Puppet / etc
2. Instalação propriamente dita◦ Baixar package e aplicar configurações◦ Configurar serviços, sites, tarefas agendadas, etc
3. Testes / notificação◦ Scripts com smoke tests◦ Notificações – email, Slack, Webhook, etc
Octopus Deploy – Configurações de projetos◦Steps do processo podem ter condições:
◦ Papeis (Roles)◦ Ambientes (Environment)
◦Selecionam em quais targets o step executará
Octopus Deploy – Configurações de projetos Package deploys:
◦Usado para Windows Services e IIS Apps◦Tipos de packages:
◦ Nuget (repositório interno ou externo)◦ Zip, Tar, etc (repositório interno)
◦TeamCity funciona como repositório externo
Octopus Deploy – Configurações de projetos◦Utilize variáveis para alterar valores de configurações
◦ Podem ser aplicadas por role, environment, target ou mesmo step
◦ Necessário habilitar a feature “Configuration variables”◦Utilize transformações para demais alterações
◦ Exemplo: adicionar ou remover elementos nos arquivos .config
◦ Necessário habilitar a feature “Configuration transforms”
Octopus Deploy – Configurações de projetos Importante:
◦Steps executam em sequência◦Ação(ões) do step executa(m) em paralelo em cada target◦Variáveis devem existir nos arquivos para serem substituídas
◦Conteúdo das váriáveis e steps do processo são salvos para cada release gerada◦ Variáveis podem ser atualizadas
Octopus Deploy – Saindo do básico◦Adicione process steps da Community Library
◦ AWS◦ Azure◦ File System, etc
◦Custom scripts (powershell, C#) nos packages ou steps◦ PreDeploy◦ Deploy◦ PostDeploy◦ DeployFailed
Octopus Deploy – Saindo do básico◦Crie Channels para diferentes lifecycles◦Hotfix -> direto para produção◦Canal por componente (e um canal para todos juntos)◦TeamCity: informe o channel da release no step “OctopusDeploy: Create Release”
Referências e material adicional Understanding DevOps – Part 6: Continuous Deployment vs Continuous Delivery
◦ https://sdarchitect.wordpress.com/2013/10/16/understanding-devops-part-6-continuous-deployment/
Continuous Delivery Vs. Continuous Deployment: What's the Diff?◦ https://puppet.com/blog/continuous-delivery-vs-continuous-deployment-what-s-diff
The Benefits of Deployment Automation ◦ http://
download.octopusdeploy.com/files/whitepaper-automated-deployment-octopus-deploy.pdf
Referências e material adicional Octopus Deploy Documentation
◦ http://docs.octopusdeploy.com/display/OD/Getting+started
Octopus Deploy Patterns ◦ http://docs.octopusdeploy.com/display/OD/Patterns
Enable or Disable Windows Features using DISM◦ https://technet.microsoft.com/en-us/library/hh824822.aspx?f=255&MSPPE
rror=-2147217396