Conteúdo apresentado em um TechTalk Interno na hbsis mostrando como é feito o deploy de um projeto escrito em .NET utilizando WebService Rest feito em Nancy e Serviços do window, para uma solução de Vendas onde possui 8 máquinas em uma infraestrutura e 6 em uma infraestrutura diferente, ambas infra com deploy automatizado da solução inteira.
2. Tópicos
Geração de Artefatos e versionamento.
Gestão de configuração.
Pipeline de implantação.
Script de implantação.
Ferramenta de entrega contínua.
Demonstração.
3. Geração de artefatos.
Todo build deve gerar artefatos.
Artefatos devem ser versionados.
Salvando artefatos podemos buscar com a versão.
Uma vez gerado ele deve ser imutável.
4. Todo build deve gerar artefatos.
Botar imagem do jenkins gerando binarios.
9. Pipeline de implantação
No pipeline de implantação, todo mudança no controle de versão dispara um processo (geralmente em um servidor de
integração continua) que cria pacotes para implantação e roda testes unitários e outras validações como análise de código.
O primeiro passo é otimizado para que dure apenas alguns minutos. Se o estágio inicial falhar, o problema deve ser
corrigido imediatamente, ninguém deve subir alterações em cima de builds quebradas.
Cada passo completado pelo commit dispara um novo processo no pipeline que começa a receber testes mais pesados e
complexos. Commits que conseguem passar pelos testes automatizados, estão prontos para serem implantados para
receber testes exploratórios, testes de performance, aceitação e produção conforme a imagem a seguir.
- Jez Humble https://continuousdelivery.com/implementing/patterns/
10. Pipeline de implantação
Segundo Jez Humble - “The key pattern introduced in continuous delivery is the
deployment pipeline.”
11. Script de implantação.
Deve conter todas as instruções de :
Compilação
Configuração da aplicação
Instruções de como fazer Deploy
Instruções de como fazer teste.
Deve possuir acessos (user/password) e IPs de máquinas para configurações remotas.
Deve ser possível colocar a aplicação em produção só lendo o script de
implantação (Analogia com a especificação tecnica do deploy).
12. Script de implantação.
O Script de implantação vai permitir atingir práticas valiosas para entrega
contínua.
Only build packages once. We want to be sure the thing we’re deploying is the same thing we’ve tested throughout the
deployment pipeline, so if a deployment fails we can eliminate the packages as the source of the failure.
Deploy the same way to every environment—including development. This way, we test the deployment process many, many
times before it gets to production, and again, we can eliminate it as the source of any problems.
Smoke test your deployments. Have a script that validates all your application’s dependencies are available, at the location you
have configured your application. Make sure your application is running and available as part of the deployment process.
Keep your environments similar. Although they may differ in hardware configuration, they should have the same version of the
operating system and middleware packages, and they should be configured in the same way. This has become much easier to
achieve with modern virtualization and container technology.
13. Script de implantação
É recomendável que o script de implantação esteja escrito em uma linguagem
que permita automação e fácil modificação pela equipe como um todo exemplos
Phyton
Shell Script
Powershell
Linguagens scripts são boas pois possuem rico
acesso a recursos de sistema operacional e não precisam
ser compiladas para executar.
14. Script de implantação.
O script de implantação deve ter todo o recurso necessario para fazer
deploys/compilar/acessos e etc.
Ips
Usuários/Senhas
Informações de diretórios.
Demais configurações.
15. Script de implantação
Usar uma DSL de automação de build pode auxiliar na integração com a
ferramenta de integração contínua.
16. Script de implantação
Usar uma linguagem que permita automação do SO pode facilitar o processo de
implantação da aplicação, permitindo também usar código mais alto nível.
17. Ferramenta de entrega contínua.
O Script de implantação deve estar preparado para ser executado de qualquer
ambiente que possua as ferramentas e infraestrutura necessária para as tarefas
contidas.
A ferramenta de entrega contínua deve conhecer coisas básicas como :
Máquina onde vai executar o script.
Linha de comando para chamar o script.
Saber onde buscar o script (SVN/Rede/Repositórios).
Efetivamente executar ele.
18. Ferramenta de entrega contínua.
Exemplo de configuração de step de geração de artefato no Jenkins.
19. Ferramenta de entrega contínua.
Abstraindo a sintaxe o Job executa apenas sua tarefa.