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.