Implantação rápida ou como implantar front-end em 15 minutos

Durante muito tempo, tivemos uma pergunta: quão fácil e rápido é implantar um projeto front-end?

Pensamos em uma ferramenta como Jenkins. Muitos que o configuraram sabem que é preciso muito tempo para configurá-lo e, mais importante, são necessários muitos recursos do sistema. Criá-lo no servidor significa alocar um gigabyte e meio de memória. É um prazer ter 500 megabytes para tudo, por exemplo.

Uma alternativa é Mina. Essa é uma ótima solução, e a usamos em projetos Ruby. Mas e se você tiver apenas um front-end? Colocar Ruby e fazer um pacote? Não, é muito complicado. Mina, é claro, tem uma ótima funcionalidade, mas queremos fazer isso no NodeJS sem gestos desnecessários.

No final, escrevemos scripts do Bash, mas isso nos incomodou. E tivemos a ideia de criar nosso próprio serviço pequeno para implantar aplicativos front-end, que serão:

  • pacote npm
  • tem uma configuração pequena e simples
  • levar 10 minutos para configurá-lo e 5 minutos para implantar
  • ter um sistema de liberação (se, afinal, algo der errado e alguém disser "é
falido, você pode retornar com segurança e rapidez à versão anterior)

E criamos o Runy - uma ferramenta conveniente e prática para implantar o front-end.

Tudo o que você precisa para configurá-lo e a primeira implantação após a instalação do pacote são três comandos:
init - crie uma configuração e insira seus dados nela
setup - cria uma estrutura de projeto
deploy - implante seu projeto

E isso é tudo!

Este módulo simplificou nossas vidas! Agora a implantação ocorre em uma equipe. Rápido e fácil. Quando novos desenvolvedores vêm até nós, você pode dar a eles acesso ao servidor dev / stage, para que os funcionários possam se implantar. Os desenvolvedores juniores também acharão útil, eles não precisam de um limite de entrada para uso e, no futuro, poderão descobrir o módulo e adquirir novos conhecimentos.

Um pouco sobre a parte técnica (um manual mais detalhado está no github ). Atualmente, o Runy possui os seguintes comandos: init, configuração, implantação, desbloqueio, reversão.

Init


Cria um arquivo de configuração no local de chamada do comando. Você deve inserir seus dados nele. Como você pode ver, estamos usando a conexão ssh-agent, portanto, nenhuma senha estará na configuração.

// runy.js module.exports = { host: '0.0.0.0', //   username: 'username', //       port: 22, //   remotePath: '/your/project/path', //      git: 'link-to-your-git-repository', //  ( ssh)    agent: process.env.SSH_AUTH_SOCK, //   commands: [ //      'npm install', 'npm run build', ], }; 

Configuração


No caminho especificado na configuração, ele cria a pasta releases (armazena os releases nos números 1, 2, 3 etc.) e o arquivo .current.release (o número do release atual é armazenado nele).

Implantar


Essa equipe tem alguma proteção, ao mesmo tempo apenas uma pessoa pode fazer uma implantação.

A equipe faz o seguinte. Cria uma pasta temporária, instala um projeto, executa uma lista de seus comandos no arquivo de configuração (comandos) para extrair as dependências e criar o aplicativo, cria uma nova pasta de lançamento, transfere o projeto recém-construído para lá, verifica o número de lançamentos e exclui os antigos (3 lançamentos agora estão armazenados), cria um link simbólico para a versão atual (a versão atual sempre estará disponível nesse caminho your-remote-path / current), atualiza o arquivo com o dígito da versão, limpa as pastas.

Desbloquear


Exclui o arquivo de proteção criado quando o comando deploy é executado. Em geral, o arquivo é excluído automaticamente e mesmo ao processar erros, mas em todas as ocasiões esse comando existe.

Reversão


Retorna um link simbólico para a versão anterior e exclui a atual.

PS Ainda temos idéias para o desenvolvimento desta ferramenta, você também pode participar do desenvolvimento do projeto criando / executando tarefas aqui .

Deixe a implantação de cada desenvolvedor se tornar mais conveniente e mais rápida.

Source: https://habr.com/ru/post/pt413495/


All Articles