
Implantação Contínua (Continuous Deployment) é uma abordagem especial no desenvolvimento de software que é aplicada para a implementação rápida, segura e eficiente de várias funcionalidades no software.
A ideia principal é criar um processo automatizado confiável, permitindo que o desenvolvedor forneça rapidamente um produto pronto ao usuário. Nesse processo, são feitas mudanças contínuas na produção, o que é chamado de pipeline de entrega contínua (CD Pipeline).
A Skillbox recomenda: Curso Prático .
Lembramos: para todos os leitores do «Habr» — desconto de 10.000 rublos na inscrição em qualquer curso Skillbox com o código promocional «Habr».

Para gerenciar o fluxo, pode-se utilizar uma ampla gama de ferramentas, tanto pagas quanto totalmente gratuitas. Neste artigo, descrevemos três das soluções mais populares entre os desenvolvedores que podem ser úteis para cada programador.
Jenkins
Um servidor de automação completamente autônomo e de código aberto. É recomendado utilizá-lo para automatizar todos os tipos de tarefas relacionadas à construção, teste, entrega ou implantação de software.
Requisitos mínimos para PC:
- 256 MB de RAM, 1 GB de espaço em disco.
O ideal:
- 1 GB de RAM, 50 GB no disco rígido.
Para funcionar, será necessário também um software adicional — Java Runtime Environment (JRE) versão 8.
A arquitetura (computação distribuída) se apresenta da seguinte forma:

Servidor Jenkins — instalação que é responsável pela hospedagem do GUI, assim como pela organização e execução de toda a construção.
Node/Slave/Build Server Jenkins — dispositivos que podem ser configurados para executar trabalhos de construção em nome do Master (nó principal).
Instalação para Linux
Primeiro, é necessário adicionar o repositório Jenkins ao sistema:
cd /tmp && wget -q -O -- | sudo apt-key add -- echo 'deb binary/' | sudo tee -a /etc/apt/sources.list.d/je
Atualizar o repositório de pacotes:
sudo apt update
Instalar Jenkins:
sudo apt install jenkins
Após isso, o Jenkins estará disponível no sistema na porta padrão 8080.
Para verificar se está funcionando, é necessário abrir no navegador o endereço :8080. Então, o sistema solicitará que você insira a senha inicial do usuário com privilégios de root. Essa senha pode ser encontrada no arquivo /var/lib/jenkins/secrets/initialAdminPassword.
Agora tudo está pronto para o trabalho, podemos começar a criar pipelines de CI/CD. A interface gráfica do ambiente de trabalho é a seguinte:


Vantagens do Jenkins:
- escalabilidade, que é garantida pela arquitetura Master/Slave;
- presença de API REST XML/JSON;
- a capacidade de conectar um grande número de extensões através de plugins;
- uma comunidade ativa e em constante desenvolvimento.
Pontos negativos:
- falta de um bloco analítico;
- interface não muito amigável.
TeamCity
Desenvolvimento comercial pela JetBrains. O servidor é bom, com configuração simples e uma ótima interface. A configuração padrão inclui uma grande quantidade de recursos, e o número de plugins disponíveis continua a crescer.
É necessário o Java Runtime Environment (JRE) versão 8 para funcionar.
Os requisitos de hardware do servidor não são críticos:
- RAM — 3,2 GB;
- processador — dual-core, 3,2 GHz;
- canal de comunicação com largura de banda de 1 Gb/s.
O servidor permite alcançar alta performance no trabalho:
- 60 projetos com 300 configurações de builds;
- dedicação de 2 MB para o log de build;
- 50 agentes de build;
- capacidade para 50 usuários na versão web e 30 usuários no IDE;
- 100 conexões externas de VCS, geralmente Perforce e Subversion. O tempo médio de mudanças é de 120 segundos;
- mais de 150 modificações por dia;
- trabalho com banco de dados em um único servidor;
- configurações do processo do servidor JVM: -Xmx1100m -XX:MaxPermSize=120m.
Os requisitos para o agente são determinados pelos builds em execução. A principal função do servidor é monitorar todos os agentes conectados e distribuir os builds da fila para esses agentes com base nas exigências de compatibilidade, informando os resultados. Os agentes operam em várias plataformas e sistemas operacionais, além de um ambiente pré-configurado.
Todas as informações sobre os resultados dos builds são armazenadas no banco de dados. Isso inclui, em primeiro lugar, o histórico e outros dados semelhantes, as mudanças no VCS, os agentes, as filas de build, as contas de usuários e permissões. Apenas os logs de build e artefatos não estão no banco.

Instalação para Linux
Para instalação manual do TeamCity com o contêiner de servlet Tomcat, deve-se usar o arquivo compactado TeamCity: TeamCity .tar.gz. Faça o download .
tar -xfz TeamCity.tar.gz
/bin /runAll. sh [start|stop]
Na primeira execução, é necessário selecionar o tipo de banco de dados onde os dados do build serão armazenados.

A configuração padrão opera em :8111/ com um único agente de build registrado, rodando na mesma máquina.
Pontos fortes do TeamCity:
- configuração simples;
- interface amigável;
- uma grande quantidade de funções embutidas;
- serviço de suporte;
- possui RESTful API;
- documentação razoável;
- boa segurança.
Pontos negativos:
- integração limitada;
- é uma ferramenta paga;
- uma pequena comunidade (que, no entanto, está crescendo).
GoCD
Projeto de código aberto que requer o Java Runtime Environment (JRE) versão 8 para instalação e funcionamento.
Requisitos do sistema:
- RAM — 1 GB no mínimo, melhor mais;
- processador — dual-core, com frequência de 2 GHz;
- disco rígido — mínimo de 1 GB de espaço livre.
Agente:
- RAM — mínimo de 128 MB, melhor mais;
- processador — mínimo de 2 GHz.
O servidor gerencia o funcionamento dos agentes e fornece uma interface amigável ao usuário:

Stages/Jobs/Tasks:

Instalação para Linux
echo "deb /” | sudo tee /etc/apt/sources.list.d/gocd.list
curl | sudo apt-key add —
add-apt-repository ppa:openjdk-r/ppa
apt-get update
apt-get install -y openjdk-8-jre
apt-get install go-server
apt-get install go-agent
/etc/init.d/go-server [start|stop|status|restart]
/etc/init.d/go-agent [start|stop|status|restart]
Por padrão, GoCD funciona em :8153.
Pontos fortes do GoCD:
- código aberto;
- instalação e configuração simples;
- boa documentação;
- excelente interface do usuário:

- capacidade de visualizar o caminho de implantação do GoCD em uma única visão:

- excelente representação da estrutura do pipeline:

- GoCD otimiza o fluxo de trabalho de CD nas nuvens mais populares, incluindo Docker, AWS;
- a ferramenta permite depurar falhas no pipeline, com rastreamento de cada alteração do commit até a implantação em tempo real.
Pontos negativos:
- é necessário pelo menos um agente;
- não há console para exibir todas as tarefas realizadas;
- para executar cada comando, é necessário criar uma tarefa na configuração do pipeline;
- para instalar o plugin, é necessário mover o arquivo .jar para /plugins/external e reiniciar o servidor;
- comunidade relativamente pequena.
Como resultado
Estes são apenas três ferramentas, na verdade existem muitas mais. É difícil escolher, por isso é fundamental prestar atenção a aspectos adicionais.
O código aberto da ferramenta permite entender sua funcionalidade e ainda adicionar novas funcionalidades mais rápido. Mas quando algo não funciona, você deve contar apenas consigo mesmo e com a ajuda da comunidade. Ferramentas pagas oferecem suporte que pode ser crucial.
Se a segurança for a prioridade máxima, é melhor usar uma ferramenta local. Caso contrário, escolher uma solução SaaS é uma boa opção.
E por último: para garantir um processo de implantação contínua realmente eficaz, é necessário estabelecer critérios cuja especificidade permita restringir a escolha das ferramentas disponíveis.
A Skillbox recomenda:
- Curso Prático de Dois Anos .
- Curso online .
- Curso prático de um ano .
Fonte: habr.com
