3 ferramentas populares para implementar a entrega contínua (Continuous Deployment)

3 ferramentas populares para implementar a entrega contínua (Continuous Deployment)

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 ‘Desenvolvedor Móvel PRO’.

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».

3 ferramentas populares para implementar a entrega contínua (Continuous Deployment)

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:
3 ferramentas populares para implementar a entrega contínua (Continuous Deployment)

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 -- pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add -- echo 'deb pkg.jenkins.io/debian-stable 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 localhost: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:

3 ferramentas populares para implementar a entrega contínua (Continuous Deployment)

3 ferramentas populares para implementar a entrega contínua (Continuous Deployment)

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.

3 ferramentas populares para implementar a entrega contínua (Continuous Deployment)

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 aqui.

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.

3 ferramentas populares para implementar a entrega contínua (Continuous Deployment)

A configuração padrão opera em localhost: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:

3 ferramentas populares para implementar a entrega contínua (Continuous Deployment)

Stages/Jobs/Tasks:

3 ferramentas populares para implementar a entrega contínua (Continuous Deployment)

Instalação para Linux

echo "deb download.gocd.org /” | sudo tee /etc/apt/sources.list.d/gocd.list

curl download.gocd.org/GOCD-GPG-KEY.asc | 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 localhost:8153.

Pontos fortes do GoCD:

  • código aberto;
  • instalação e configuração simples;
  • boa documentação;

  • excelente interface do usuário:

3 ferramentas populares para implementar a entrega contínua (Continuous Deployment)

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

3 ferramentas populares para implementar a entrega contínua (Continuous Deployment)

  • excelente representação da estrutura do pipeline:

3 ferramentas populares para implementar a entrega contínua (Continuous Deployment)

  • 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:

Fonte: habr.com

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster