Bash script para fazer o deploy do HEAD
do repositório para uma máquina remota.
Utiliza SCP
e SSH
para o envio e execução de comandos. Essas são dependências tanto da máquina
local como da máquina remota.
Clone esse repositório e execute o comando abaixo, para criar um link simbólico do executável:
sudo ln -s <meu_git>/vai/vai /usr/bin/vai
Para testar, execute:
vai help
Em seu projeto Git, crie um diretório deploy
e depois rode o comando vai configure
:
mkdir deploy
vai configure
Será requisitado o preenchimento dos seguintes dados (todos obrigatórios):
-
Host: IP ou Host do servidor remoto, onde os arquivos serão enviadso
-
Port: Porta para conexão SSH
-
User: Usuário que será utilizado para conexão SSH
-
Path: Path onde o projeto deve ser "instalado"
Após o preenchimento dos dados, será configurado o ssh key para facilitar a conexão entre o computador local e o remoto.
Para configurar o ssh key será solicitado um password novo (deve ser digitado duas vezes) e posteriormente a senha do usuário informado anteriormente do computador remoto.
O vai
irá enviar os arquivos para o servidor remoto e executar o script de restart da aplicação (caso ele exista).
Esse script post-script.sh
deve ser criado dentro do diretório deploy/
:
touch deploy/post-script.sh
vim deploy/post-script.sh
Um exemplo de script de restart:
#!/bin/bash
docker-compose down
docker-compose build
docker-compose up -d
Em um projeto com o deploy configurado e o seu ssh-key também configurado, basta executar:
vai deploy
Caso o ssh-key não esteja configurado em seu computador, execute antes:
vai keygen
Em alguns casos, pode ser necessário a instalação limpa de um sistema. Isso significa remover todos os arquivos e enviar os novos.
Para isso, utilize a opção --clean-install
(ou simplesmente -c
):
vai deploy --clean-install
vai deploy -c
Atenção: Isso irá remover todos os arquivos e diretórios dentro do path da aplicação configurado em ./deploy/deploy.config
.
Para saber qual versão de commit está em produção, execute:
vai version
Esse comando irá retornar o commit do deploy utilizado.