Deploy com Git por FTP (em servidores sem acesso SSH)

Por atuar em alguns projetos onde é utilizados planos de hospedagem mais simples, é comum não termos acesso via SSH no servidor. É gente, nem todo mundo consegue ou pode ter uma VPS na digital ocean.

Por conta disso, e pelo processo normal de upload via FTP ser moroso e um tanto quanto “perigoso”, resolvi pesquisar como fazer um deploy com GIT porém via FTP, e ainda bem alguém já havia pensado nisso antes :) .

No repositório do GIT-FTP tem todo o conteúdo necessário para fazer esse procedimento, mas vou dar algumas dicas abaixo.

Instalação:

  • para instalar siga as instruções no manual

Configuração:

  • configure o git com o git config, já incluindo a url do ftp, usuário e senha
$ git config git-ftp.user john
$ git config git-ftp.url ftp.example.com
$ git config git-ftp.password secr3t
$ git config git-ftp.syncroot path/dir
$ git config git-ftp.cacert caCertStore
$ git config git-ftp.deployedsha1file mySHA1File
$ git config git-ftp.insecure 1
$ git config git-ftp.key ~/.ssh/id_rsa
$ git config git-ftp.keychain user@example.com
  • Configure o Git-ftp com escopos, isso facilita o deploy para ambientes diferentes, como teste e produção
$ git config git-ftp.testing.url ftp.testing.com:8080/foobar-path
$ git config git-ftp.testing.password simp3l
$ git config git-ftp.production.url live.example.com
$ git config git-ftp.production.password n0tThatSimp3l
  • com isso o delpoy para teste é feito da seguinte maneira
$ git ftp push -s testing
  • e na produção é feito assim:
$ git ftp push -s production
  • Ignorando arquivos ou diretórios: Basta criar na raiz do projeto o arquivo .git-ftp-ignore
config/*
*.txt
  • incluindo diretórios ou arquivos na sincronização: basta criar o arquivo .git-ftp-include (aqui eu inclui para sincronizar o diretório vendor, com base no composer.lock)
vendor/:composer.lock
  • Depois de configurado basta
#sobe todos os arquivos
git ftp init
# ou se os arquivos já estão no servidor
git ftp catchup
# Trabalhando e fazendo deploy
echo "new content" >> index.txt
git commit index.txt -m "Add new content"
git ftp push
# 1 file to sync:
# [1 of 1] Buffered for upload 'index.txt'.
# Uploading ...
# Last deployment changed to ded01b27e5c785fb251150805308d3d0f8117387.

Referências

Show your support

Clapping shows how much you appreciated Elton Antunes’s story.