Recursos didáticos para auxiliar na leitura e execução dos exercícios.
Máquinas Virtuais
Repositório git
Applivro
Errata 1-Mar/2019
Errata 2-Ajuste na configuração do Nexus – Nov/2019
Errata 3-Ajuste nas configurações das VMs e comandos de alguns contêineres – Nov/2020
Máquinas Virtuais
Para automatizar e simplificar a criação de máquinas virtuais para executar os exercícios do livro, será utilizado o Vagrant, um software que permite a criação máquinas virtuais no Virtualbox, VmWare e Hiper-V, de forma simples e automatizada agilizando a criação de ambientes de desenvolvimento e testes. Neste livro, o Vagrant será usado em conjunto com o VirtualBox.
Para executar simultaneamente todas as máquinas virtuais é recomendado usar um computador com pelo menos 16 GB de memória RAM. Pode ser usado um computador com 8 GB de memória RAM, mas há grandes chances das operações serem realizadas com baixa performance.
Como alternativa você pode criar uma conta gratuita no Docker Hub e, em seguida, acessar o site Play with Docker. Neste site, você poderá criar gratuitamente até 5 instâncias de máquinas virtuais, cada uma com 4 GB de memória RAM e com o Docker instalado, para usar por até 4 horas. A única desvantagem é que depois desse tempo, a sessão expirará e todas as instâncias e os dados serão descartados.
Outra alternativa é criar uma conta gratuita num serviço de computação na nuvem e receber alguns créditos para criar máquinas virtuais e usá-las durante um período de demonstração. Alguns desses serviços são: Azure, Digital Ocean, Google Cloud e Amazon AWS. Ao criar a conta em um desses serviços será solicitado os dados de um cartão de crédito internacional, mas você não será cobrado até usar completamente os créditos oferecidos por cada serviço ou até expirar o período de demonstração.
Repositório git
Foi criado um repositório git para armazenamento dos trechos de código e arquivos de configuração mostrados no livro.
Primeiramente quero agradecer a confiança ao adquirir o nosso livro. Esperamos que ele seja útil no seu aprendizado e no dia a dia da profissão.
Essa errata corrige alguns pequenos erros no texto. São elas:
1) Contra-capa:
Antes: Conhecerá um caso de uso do Jenkins ao ser integrado caom as ferramentas: …
Depois: Conhecerá um caso de uso do Jenkins ao ser integrado com as ferramentas: …
2) Página 49 da seção 3.2 – Configuração como código:
Antes: Mas e se você tivesse de configurar uns 10 servidores Jenkins cada um com uma centena de 20 plugins?
Depois: Mas e se você tivesse que configurar uns 10 servidores Jenkins cada um com uma centena de plugins?
3) Página 72 da seção 3.5 – Gerenciando credenciais:
Antes: No campo ID, informe o texto que será usado para referenciar o login e a senha informados anteriormente, exemplo: meu-acesso-gitlab…
Depois: No campo ID, informe o texto que será usado para referenciar o token informado anteriormente, exemplo: meu-acesso-gitlab…
Estas alterações já serão aplicadas na próxima impressão.
Abraço e fiquem com Deus.
Errata 2-Ajuste na configuração do Nexus – Nov/2019
Olá, pessoal!
Com as novas versões do Sonatype Nexus lançadas ao longo de 2019, é necessário realizar o passo a passo abaixo para obter a senha inicial e permitir acesso anônimo aos artefatos hospedados no Nexus para que o pipeline dos capítulos 8 e 9 do livro funcionem corretamente.
A senha inicial do Nexus pode ser obtida com o comando a seguir.
cat /docker/nexus/data/admin.password
Pode ser que demore alguns minutos para o arquivo ser criado após o conteiner do Nexus ter sido executado pela primeira vez.
Acesse o nexus hospedado na porta 8081/TCP do host ci-server.domain.com.br. Faça login no Nexus, com o login admin e a senha inicial. Caso tenha alterado a senha durante o primeiro acesso do Nexus, informe a nova senha cadastrada. Será solicitado uma nova senha.
Quando for perguntado se deve permitir acesso anônimo ao Nexus, diga que sim.
Caso, não tenha habilitado o acesso anônimo durante o primeiro acesso ao Nexus, acesse o menu Security > Anonymous. Marque a opção Allow anonymous users to access the server, conforme mostra a figura a seguir. Depois clique em Save.
Pronto! Pode continuar seguindo as instruções do livro.
Bons estudos!
Errata 3-Ajuste nas configurações das VMs e comandos de alguns contêineres – Nov/2020
Olá, pessoal!
Torço para que vocês e seus familiares fiquem bem em meio à pandemia e desejo saúde aos que precisam!
Durante a leitura do livro, Thiago Augusto Negrão Orbite encontrou alguns problemas e após vários testes e um detalhado troubleshooting encontramos a solução que será detalhada a seguir e que pode ajudar outras pessoas que vierem a ter esses problemas. Thiago, muito obrigado pela confiança e tempo investido!
Problema 1: O contêiner do Nexus não estava iniciando por falta de memória.
Lendo o log de cima para baixo, o primeiro erro que ocorre é esse:
ERROR [FelixStartLevel] *SYSTEM com.orientechnologies.orient.core.storage.impl.local.paginated.OLocalPaginatedStorage - Exception <code>0CDBA14C</code> in storage <code>plocal:/nexus-data/db/OSystem</code>: 2.2.36 (build d3beb772c02098ceaea89779a7afd4b7305d3788, branch 2.2.x)
<strong>java.lang.OutOfMemoryError</strong>: null
at sun.misc.Unsafe.allocateMemory(Native Method)
at java.nio.DirectByteBuffer.(DirectByteBuffer.java:127)
Onde java.lang.OutOfMemoryError é uma mensagem padrão do Java que indica falta de memória.
Solução: Aumentar a quantidade de memória RAM da VM ci-server de 3 GB para 4GB. Essa VM é utilizada para executar vários outros serviços, tais como: Jenkins, Sonarqube, Gogs e PostgreSQL. Com o passar do tempo novas funcionalidades são adicionadas a estes serviços e para todos funcionarem corretamente na mesma VM é necessário aumentar a quantidade de memória.
Problema 2: O contêiner do Nexus não estava iniciando por falta de espaço em disco.
Após corrigir o problema anterior, apareceu no log o seguinte erro:
<strong>OLowDiskSpaceException</strong>: Error occurred while executing a write operation to database 'OSystem' due to limited free space on the disk (4012 MB). The database is now working in read-only mode. Please close the database (or stop OrientDB), make room on your hard drive and then reopen the database. The minimal required space is 4096 MB. Required space is now set to 4096MB (you can change it by setting parameter storage.diskCache.diskFreeSpaceLimit).
DB name="OSystem
O trecho do log indica que o Nexus precisa de pelo menos 4 GB de espaço em disco para criar o banco de dados.
Solução: Aumentar o tamanho do disco (HD) das VMs de 10 GB para 30 GB.
As soluções dos problemas 1 e 2 foram aplicadas ao arquivo capitulo_02/vagrant/Vagrantfile conforme mostrado neste commit:
Este é um plugin que muda muito rápido com o tempo e a configuração também depende do trabalho dos desenvolvedores responsáveis por cada um dos outros 1.500 plugins do Jenkins para manter a compatibilidade a cada nova versão do JCasC.
Na execução do livro você não precisará ter o Jenkins integrado ao LDAP, mas entendo a importância disso para uso no trabalho e por isso fiz uma rápida pesquisa e separei estes links para quem tiver interesse em saber mais sobre este plugin:
Neste livro você entenderá os conceitos e as diferenças entre Continuous Integration, Continuous Delivery e Continuous Deploy. Conhecerá um caso de uso do Jenkins ao ser integrado com as ferramentas: Gogs, Maven, Nexus, SonarQube, Docker, Terraform e Shell Script. Este conjunto de ferramentas permite automatizar um cliclo de desenvolvimento, testes e implantação de uma aplicação web. Você também conhecerá alguns conceitos próprios do Jenkins, aprenderá a configurá-lo como código, alterar o tema, instalar plugins, gerenciar usuários, credenciais e escrever pipelines. Para ler e praticar os conhecimentos compartilhados neste livro não é necessário nenhum conhecimento prévio sobre Jenkins e o público alvo são estudantes da área de Tecnologia da Informação, administradores de sistemas, administradores de rede, desenvolvedores e gerentes.
Características
Estas são algumas das características do Jenkins.
Integração
Integre o Jenkins a ferramentas de versionamento de código, testes, build, orquestração de conteineires, gerência de configuração, deploy e envio de notificações.
Automação
Automatize tarefas que vão desde o push no repositório Git até o deploy em ambientes de teste, homologação e produção.
Pipeline
Desenvolva pipelines em etapas que facilitem a visualização do andamento do trabalho automatizado realizado pelo Jenkins.
Agilidade
Com o Jenkins você conseguirá identificar problemas em alguma etapa do pipeline mais rápido e fazer deploy com maior frequência de forma automatizada confiável.
Autores
Conheça as pessoas que colaboraram com o conteúdo do livro.