3 ferramentas populares para organizar implantação contínua (Implantação Contínua)
A implantação contínua é uma abordagem especial no desenvolvimento de software usada para implementar de forma rápida, segura e eficiente várias funções no software.
A ideia principal é criar um processo automatizado confiável que permita ao desenvolvedor entregar rapidamente o produto acabado ao usuário. Ao mesmo tempo, mudanças constantes são feitas na produção - isso é chamado de pipeline de entrega contínua (CD Pipeline).
Lembramos:para todos os leitores de "Habr" - um desconto de 10 rublos ao se inscrever em qualquer curso Skillbox usando o código promocional "Habr".
Para controlar o fluxo, você pode usar uma ampla gama de ferramentas, tanto pagas quanto totalmente gratuitas. Este artigo descreve três das soluções mais populares entre os desenvolvedores que podem ser úteis para qualquer programador.
Jenkins
Servidor de automação de código aberto totalmente independente. Vale a pena trabalhar para automatizar todos os tipos de tarefas relacionadas à construção, teste, envio ou implantação de software.
Requisitos mínimos do PC:
256 MB de RAM, 1 GB de espaço para arquivo.
Ótimo:
1 GB de RAM, disco rígido de 50 GB.
Para funcionar, você também precisará de software adicional - Java Runtime Environment (JRE) versão 8.
A arquitetura (computação distribuída) é assim:
Jenkins Server é uma instalação responsável pela hospedagem da GUI, bem como pela organização e execução de toda a compilação.
Jenkins Node/Slave/Build Server - dispositivos que podem ser configurados para executar trabalho de construção em nome do Master (nó mestre).
Instalação para Linux
Primeiro você precisa adicionar o repositório Jenkins ao sistema:
Depois disso, o Jenkins estará disponível no sistema através da porta padrão 8080.
Para verificar a funcionalidade, você precisa abrir o endereço no navegador localhost:8080. O sistema solicitará que você insira a senha inicial do usuário root. Esta senha está localizada no arquivo /var/lib/jenkins/secrets/initialAdminPassword.
Agora que tudo está pronto, você pode começar a criar fluxos de CI/CD. A interface gráfica do ambiente de trabalho é assim:
Pontos fortes de Jenkins:
escalabilidade proporcionada pela arquitetura Master/Slave;
disponibilidade de API REST XML/JSON;
a capacidade de conectar um grande número de extensões graças a plugins;
comunidade ativa e em constante evolução.
Contras:
não há bloqueio analítico;
interface não muito amigável.
TeamCity
Desenvolvimento comercial da JetBrains. O servidor é bom, com configuração simples e uma interface excelente. A configuração padrão possui um grande número de funções e o número de plugins disponíveis está aumentando constantemente.
Requer Java Runtime Environment (JRE) versão 8.
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 capacidade de 1 Gb/s.
O servidor permite alcançar alto desempenho:
60 projetos com 300 configurações de build;
Alocação de 2 MB para log de construção;
50 agentes de construção;
a capacidade de trabalhar com 50 usuários na versão web e 30 usuários no IDE;
100 conexões de VCS externos, geralmente Perforce e Subversion. O tempo médio de mudança é de 120 segundos;
mais de 150 modificações por dia;
trabalhar com o banco de dados em um servidor;
Configurações do processo do servidor JVM: -Xmx1100m -XX:MaxPermSize=120m.
Os requisitos do agente são baseados na execução de assemblies. A principal tarefa do servidor é monitorar todos os agentes conectados e distribuir assemblies enfileirados para esses agentes com base nos requisitos de compatibilidade, reportando os resultados. Os agentes vêm em diversas plataformas e sistemas operacionais, além de um ambiente pré-configurado.
Todas as informações sobre os resultados da construção são armazenadas no banco de dados. Principalmente, trata-se de histórico e outros dados semelhantes, alterações de VCS, agentes, filas de construção, contas de usuário e permissões. O banco de dados não inclui apenas logs de construção e artefatos.
Instalação para Linux
Para instalar manualmente o TeamCity com um contêiner de servlet Tomcat, você deve usar o arquivo TeamCity: TeamCity .tar.gz. Download Você pode obtê-lo aqui.
tar -xfz TeamCity.tar.gz
/bin/runAll. sh [iniciar|parar]
Ao iniciar, você precisa selecionar o tipo de banco de dados no qual os dados da montagem serão armazenados.
A configuração padrão é executada em localhost:8111/ com um agente de compilação registrado em execução no mesmo PC.
Pontos fortes do TeamCity:
fácil configuração;
interface amigável;
um grande número de funções integradas;
Apoio, suporte;
existe uma API RESTful;
boa documentação;
boa segurança.
Contras:
integração limitada;
Esta é uma ferramenta paga;
uma pequena comunidade (que, no entanto, está crescendo).
GoCDGenericName
Um projeto de código aberto que requer Java Runtime Environment (JRE) versão 8 para instalação e operação.
Requisitos do sistema:
RAM – mínimo de 1 GB, quanto mais, melhor;
processador - dual-core, com frequência central de 2 GHz;
disco rígido - pelo menos 1 GB de espaço livre.
Agente:
RAM - pelo menos 128 MB, de preferência mais;
processador - pelo menos 2 GHz.
O servidor garante a operação dos agentes e fornece uma interface conveniente para o usuário:
Etapas/Trabalhos/Tarefas:
Instalação para Linux
echo "deb baixar.gocd.org /” | sudo tee /etc/apt/sources.list.d/gocd.list
Por padrão, o GoCd é executado em localhost: 8153.
Pontos fortes do GoCd:
Código aberto;
instalação e configuração simples;
boa documentação;
Ótima interface de usuário:
capacidade de mostrar o caminho de implantação passo a passo do GoCD em uma visualização:
excelente exibição da estrutura do pipeline:
GoCD otimiza o fluxo de trabalho de CD nos ambientes de nuvem mais populares, incluindo Docker, AWS;
a ferramenta permite corrigir problemas no pipeline, para o qual há acompanhamento de cada alteração desde o commit até a implantação em tempo real.
Contras:
é necessário pelo menos um agente;
não há console para exibir todas as tarefas concluídas;
para executar cada comando, você precisa criar uma tarefa para a configuração do pipeline;
Para instalar o plugin você precisa mover o arquivo .jar para /plugins/external e reinicie o servidor;
comunidade relativamente pequena.
Como uma conclusão
Estas são apenas três ferramentas; na verdade, existem muitas mais. É difícil escolher, então você definitivamente precisa prestar atenção a aspectos adicionais.
O código-fonte aberto da ferramenta permite entender o que ela é, além de adicionar novos recursos com mais rapidez. Mas se algo não funcionar, você terá que contar apenas com você mesmo e com a ajuda da comunidade. Ferramentas pagas fornecem suporte que às vezes pode ser crítico.
Se a segurança é sua prioridade, vale a pena trabalhar com 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 verdadeiramente eficaz, é necessário formular critérios cujas especificidades permitirão restringir a gama de ferramentas disponíveis.