Push do Git para a Produção (FTP)


130

Gostaria de saber se existe uma maneira fácil de colocar um repositório GIT em produção (em um servidor FTP)? obrigado

Respostas:


162

Algumas ferramentas adicionadas recentemente ao wiki do Git :

O git-ftp de René Moser é um shell script simples para fazer o FTP da maneira Git. Use o git-ftp.sh para carregar apenas os arquivos rastreados pelo Git em um servidor FTP, que foram alterados desde o último upload. Isso economiza tempo e largura de banda. Mesmo se você jogar com diferentes ramificações, o git-ftp.sh sabe quais arquivos são diferentes. Nenhum cliente FTP comum pode fazer isso.

git-ftp de Edward Z. Yang é um script simples escrito em python para fazer upload de arquivos em um repositório Git via FTP, apenas transferindo novos arquivos e removendo arquivos antigos.


3
usando git-ftp, existe uma maneira de enviar apenas um subdiretório (por exemplo, a pasta de publicação do html5 boilerplate) para o diretório ftp especificado?
quadrilha

E se houver vários desenvolvedores na equipe. Ainda é possível usar esses scripts?
Trilliput

@Trilliput: Um pouco tarde aqui, mas sim, um servidor intermediário / vm na rede como o lugar onde todo mundo empurra, e então: github.com/ezyang/git-ftp#using-a-bare-repository-as-a -proxy
Pranav 웃

O github.com/banago/PHPloy também faz uma coisa semelhante, mas funciona com submódulos, com os quais suspeito que algumas das ferramentas mencionadas possam ter dificuldades.
Simon Médio

O principal problema com o git-ftp (não tenho certeza do script ou python) Tentei muito ruim ao fazer upload de grandes pedaços de arquivos e uma longa lista de arquivos.
Indianwebdevil


11

Eu achei o PHPloy uma ótima ferramenta para enviar suas confirmações do Git para servidores remotos por FTP. Ele funciona a partir da linha de comando e é escrito em PHP (e até detecta alterações nos submódulos).

https://github.com/banago/PHPloy

git commit ...
phploy -s staging
phploy -s production

Feito!

(Isenção de responsabilidade: depois de usá-lo por um tempo, agora eu contribuí com algumas correções e melhorias de código, tornando-o compatível com o Windows.)


10

Se você estiver em um Mac e tiver o Transmit, recomendo o seguinte script git-tranmit ( https://gist.github.com/379750 ). Ele usa o DockSend para enviar apenas os últimos arquivos atualizados. Se você não estiver familiarizado com o DockSend, consulte http://www.panic.com/blog/2010/11/15-secrets-of-transmit/ .

Configuração:

  1. cp git-transit / usr / sbin /.
  2. cd / usr / sbin
  3. chmod + x transmissão git
  4. Envio de configuração para o seu aplicativo ao vivo
  5. Execute git-transmit no seu repositório git.

1
Esse script é um pouco desajeitado ao selecionar 'últimos arquivos atualizados'. Confira este garfo para uma solução mais elegante.
quickshiftin

Além disso, você pode querer transmitir apenas arquivos rastreados e não confirmados. Aqui está um pequeno script que faz exatamente isso: gist.github.com/borisdiakur/37b8f512f6f8865b79c7
borisdiakur

5

Não é para isso que serve o git, a rigor. No entanto, se sua fonte é algo que não precisa ser compilado ou processado, digamos, um site que consiste inteiramente de arquivos html e javascript e similares, você pode ter um clone do repositório em seu servidor git pullda Web e usá -lo no servidor para mantê-lo atualizado -Até a presente data. Note, eu configuraria seu servidor web para ocultar o diretório git e tal. E isso é apenas o começo das preocupações de segurança.

Se você tiver algum tipo de compilação ou processamento, comece a analisar Ant , Maven , BuildR , SBT , etc.


29
O único problema é que você não tem acesso ao servidor de produção, ou seja, pode ser uma hospedagem compartilhada simples, com apenas acesso FTP.
dodgy_coder

4

Você pode usar o Deployhq.com, que funciona como um encanto, a única coisa que você precisa fazer é configurar seu repositório e sua conta FTP.

Atualmente, eles são os seguintes sistemas de controle de versão:

Git, Subversão, Mercurial.

Com repositório hospedado

  • GitHub
  • Bitbucket
  • GitLab
  • Codebase

insira a descrição da imagem aqui




1

Há um script Ruby aqui - Ruby git-deploy via FTP ou SSH que carrega apenas os arquivos alterados no repositório git via FTP ou SSH.

Como mencionado em outra resposta, aqui está o script git-ftp.py do Python, que faz uma coisa semelhante.

E aqui está a versão do shell script do git-ftp .

Há também um projeto gem Ruby chamado git-deploy, que permite configurar uma implantação personalizada por meio de um git remote usando o git pushcomando, da mesma maneira que os serviços Heroku e Azure. Para este, você pode precisar escrever métodos personalizados para implantar via FTP e acho que assume que você tenha acesso SSH ao servidor de produção.


0

Se você estiver colocando código em produção, recomendo usar um "instalador", como um pacote RPM, para instalar seu código. Dessa forma, a versão será estampada e você poderá aproveitar o pacote do instalador para oferecer suporte a atualizações no código de produção. O Git não é realmente projetado para oferecer suporte a instalações de produção, ele visa rastrear alterações no próprio código.

De qualquer forma, com um .RPM (ou EXE ou o que for) criado, você pode enviá-lo por FTP para o sistema de produção e instalá-lo como qualquer outro pacote.


5
Bem, o git pode ser muito bem aproveitado para esse propósito na realidade. Confira a etiqueta e crie ganchos pós-checkout, pós-mesclagem etc. para lidar com os procedimentos de instalação necessários. Costumávamos usar pacotes RPM, mas depois de passar para o git, era simplesmente um exagero.
#

0

Adicione-o como um controle remoto e você poderá enviá-lo por push, mas simplesmente empurrar o código não é suficiente, ele precisa ser mesclado com a árvore de trabalho. A maneira mais fácil é seguir o caminho inverso, ter uma árvore de trabalho no servidor e buscar e mesclar isso.



0

Eu estava lutando muito para descobrir isso. Eu descobri uma maneira fácil de fazer isso de várias fontes ( git-ftpINSTALL , git-ftpUPLOAD , git-ftpIssue , git-ftpPUSH ). Você pode ler para referência, mas não há necessidade, porque mencionei o processo passo a passo abaixo.

Primeira coisa: instale git e curl usando brew no MAC OS

brew install git
brew install curl --with-ssl --with-libssh2
brew install git-ftp

Execute os seguintes comandos:

git clone https://github.com/git-ftp/git-ftp.git
cd git-ftp
git tag # see available tags
git checkout <tag> # checkout the latest tag by replacing <tag>
sudo make install

Atualizando usando git

git pull
git tag # see available tags
git checkout <tag> # checkout the latest tag by replacing <tag>
sudo make install

Configuração

git config git-ftp.url YourFtpServerName.Net
git config git-ftp.user FtpUserName
git config git-ftp.password YourPassword

Carregar todos os arquivos

git ftp init

Ou se os arquivos já estiverem lá

git ftp catchup

Trabalhar e implantar

echo "Hello StackOverflow" >> index.txt
git commit application/libraries/index.txt -m "I love StackOverflow"
git ftp push

Se houver um erro: pathspec 'index.txt' não correspondeu a nenhum arquivo conhecido pelo git . Isso significa que o arquivo ainda não foi preparado, adicione o arquivo e tente confirmar.

git add application/libraries/index.txt
git commit application/libraries/index.txt -m "I love StackOverflow"

Espero que isto ajude.


0

Você pode tentar o FTPloy ...

https://ftploy.com

"Enviar alterações para o GitHub ou Bitbucket."

"Implantar alterações automaticamente no seu servidor"

Você tem um projeto gratuito para experimentar. Atualmente, estou usando para um pequeno site php e funciona muito bem. Alguns bugs no site, mas é um projeto ativo, pelo menos eles estão trabalhando nele.


1
Publiquei esta resposta prematuramente. O FTPloy não está 'pronto para produção' e há muitos bugs. Não consegui fazê-lo funcionar. Estou usando o DeployHQ, que funciona muito bem.
26616 Dave Thompson

0

Confira https://gitftp-deploy.com/ se você estiver no MacOS e gostar de GUIs.

É um aplicativo pequeno e agradável que usa o Git para rastrear alterações e fazer upload apenas dos arquivos alterados com FTP.

Especialmente útil se você não gosta de pagar taxas mensais por dezenas de projetos menores com equipes pequenas.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.