Blog de Notícias

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

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

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

Git-ftp by git-ftp
If you use Git and you need to upload your files to an FTP server, Git-ftp can save you some time and bandwidth by…git-ftp.github.io

git-ftp/git-ftp
git-ftp - Uses Git to upload only changed files to FTP servers.github.com