Top Banner
Deploy Automatizado usando Octopus ANDRÉ MINELLI OUTUBRO / 2016
56

Deploy Automatizado usando Octopus

Apr 13, 2017

Download

Software

André Minelli
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Deploy Automatizado usando Octopus

Deploy Automatizado

usando Octopus

ANDRÉ MINELLIOUTUBRO / 2016

Page 2: Deploy Automatizado usando Octopus

Deploy Automatizado Por que?

Page 3: Deploy Automatizado usando Octopus

Deploy Automatizado Por que?

◦Fim de roteiro de instalação manual

Page 4: Deploy Automatizado usando Octopus

Deploy Automatizado Por que?

◦Fim de roteiro de instalação manual◦Reduz dependência de especialistas e/ou ‘super usuários’

Page 5: Deploy Automatizado usando Octopus

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

Page 6: Deploy Automatizado usando Octopus

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

Page 7: Deploy Automatizado usando Octopus

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

Page 8: Deploy Automatizado usando Octopus

Deploy Automatizado

Objetivo Principal:

Page 9: Deploy Automatizado usando Octopus

Deploy Automatizado

Objetivo Principal:

Prover valor mais rápido para os clientes!

Page 10: Deploy Automatizado usando Octopus

Deploy Automatizado

COMO?

Page 11: Deploy Automatizado usando Octopus

Deploy Automatizado

COMO?

Reduzindo o risco de instalações

Page 12: Deploy Automatizado usando Octopus

Deploy Automatizado

◦ Se o risco é baixo, o medo é reduzido

Page 13: Deploy Automatizado usando Octopus

Deploy Automatizado

◦ Se o risco é baixo, o medo é reduzido◦ Se o medo é reduzido, a frequencia pode aumentar

Page 14: Deploy Automatizado usando Octopus

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

Page 15: Deploy Automatizado usando Octopus

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

Page 16: Deploy Automatizado usando Octopus

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

Page 17: Deploy Automatizado usando Octopus

Deploy Automatizado Intimamente ligado à Agile / Lean:

Somente quando o usuário usa o produto teremos seu feedback!

Page 18: Deploy Automatizado usando Octopus

Deploy Automatizado Benefícios adicionais:

Page 19: Deploy Automatizado usando Octopus

Deploy Automatizado Benefícios adicionais:◦Rollback simplificado

Page 20: Deploy Automatizado usando Octopus

Deploy Automatizado Benefícios adicionais:◦Rollback simplificado◦Ambientes adicionais (homologação, staging, etc) facilmente criados

Page 21: Deploy Automatizado usando Octopus

Deploy Automatizado Benefícios adicionais:◦Rollback simplificado◦Ambientes adicionais (homologação, staging, etc) facilmente criados

◦Contribui para Disaster Recovery

Page 22: Deploy Automatizado usando Octopus

Deploy Automatizado Benefícios adicionais:◦Rollback simplificado◦Ambientes adicionais (homologação, staging, etc) facilmente criados

◦Contribui para Disaster Recovery◦Registro das mudanças aplicadas

Page 23: Deploy Automatizado usando Octopus

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

Page 24: Deploy Automatizado usando Octopus

Deploy Automatizado Necessário COMPROMISSO do time:

Nenhuma alteração do servidor deve ser feita manualmente!

Page 25: Deploy Automatizado usando Octopus

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)

Page 26: Deploy Automatizado usando Octopus

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

Page 27: Deploy Automatizado usando Octopus
Page 28: Deploy Automatizado usando Octopus

Octopus Deploy – Boas práticas

Page 29: Deploy Automatizado usando Octopus

Octopus Deploy – Boas práticas◦Artefato é construído uma única vez◦Todos os ambientes recebem o mesmo binário

Page 30: Deploy Automatizado usando Octopus

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

Page 31: Deploy Automatizado usando Octopus

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

Page 32: Deploy Automatizado usando Octopus

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%)

Page 33: Deploy Automatizado usando Octopus

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

Page 34: Deploy Automatizado usando 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“

Page 35: Deploy Automatizado usando Octopus

Octopus Deploy – Configuração Básica Ambientes

◦Máquinas ◦Papéis

Projetos◦Parte de Grupo de Projetos◦Lifecycle ◦Process◦Variables

Page 36: Deploy Automatizado usando Octopus

MÃO NA MASSA!

Page 37: Deploy Automatizado usando Octopus

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

Page 38: Deploy Automatizado usando Octopus

Octopus Deploy – Configurações de projetos

Page 39: Deploy Automatizado usando Octopus

Octopus Deploy – Configurações de projetos

Dica:◦ Processo em 3 ‘etapas’:

Page 40: Deploy Automatizado usando Octopus

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

Page 41: Deploy Automatizado usando Octopus

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

Page 42: Deploy Automatizado usando Octopus

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

Page 43: Deploy Automatizado usando Octopus

Octopus Deploy – Configurações de projetos◦Steps do processo podem ter condições:

◦ Papeis (Roles)◦ Ambientes (Environment)

◦Selecionam em quais targets o step executará

Page 44: Deploy Automatizado usando Octopus

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

Page 45: Deploy Automatizado usando Octopus

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”

Page 46: Deploy Automatizado usando Octopus

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

Page 47: Deploy Automatizado usando Octopus

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

Page 48: Deploy Automatizado usando Octopus

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”

Page 49: Deploy Automatizado usando Octopus

Octopus Deploy – Saindo do básico◦Defina pipelines mais complexos◦Rolling◦Canary◦Blue-green

Page 50: Deploy Automatizado usando Octopus

Octopus Deploy – Rolling

Page 51: Deploy Automatizado usando Octopus

Octopus Deploy – Rolling

Page 52: Deploy Automatizado usando Octopus

Octopus Deploy – Canary

Page 53: Deploy Automatizado usando Octopus

Octopus Deploy – Canary

Page 54: Deploy Automatizado usando Octopus

Octopus Deploy – Blue / Green

Page 55: Deploy Automatizado usando Octopus

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

Page 56: Deploy Automatizado usando Octopus

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