Beanstalk style FTP deployment using "git-ftp" per project #1348

Closed
rahul286 opened this Issue Aug 31, 2012 · 8 comments

Projects

None yet

8 participants

@rahul286

You may be aware of beanstalk's deployment over FTP option.

Today, I came across this - https://github.com/resmo/git-ftp. git-ftp helps deploy (push) to a remote server using typical FTP details (host, user & pass)

Idea is...

  1. Gitlabhq can have few extra option per project say "Add FTP Server".
  2. A user will fill in FTP details for a project.
  3. Then whenever a project is updated gitlabhq will use git-ftp to "push/deploy" latest changes to added FTP server on that repo.

I feel git-ftp should be run from server side as a user will need to provide FTP details only once even if many developer are working on same projects.
Also from server to server, speed is faster (assuming your gitlab setup is on a dedicated/VPS box rented from typical hosting company).

@andrewfenn

I feel git-ftp should be run from server side as a user will need to provide FTP details only once even if many developer are working on same projects.

You may not be aware however git-ftp already has options to allow you to add the usernames and passwords so that you just perform "git-ftp push -s live".

@rahul286

@andrewfenn

Thanks for having a look at this.
I am aware of git-ftp option already. Let me explain use-care in more details...

Currently on each project, there are two sections: Hooks & Deploy Keys

  1. Now rename Deploy Keys to just Deploy
  2. Deploy will have two sections like Deploy using Keys and Deploy using (S)FTP
  3. Deploy using (S)FTP will give a small form to add things like:
    1. Host
    2. User
    3. Password (path repo)
    4. File-system path on remote server (e.g. /var/www/example.com/wp-content/themes/mytheme/ )
  4. (optional) Specify branch which need to be sync with remote FTP. Default could be master. A admin may specify stable

Now lets come back to Hooks section.

  1. Each repo will have a default post receive hook (implicit/hidden)
  2. This default hook when called will check if current repo has one or more Deploy using (S)FTP active.
  3. If yes, it will use store login credentials and may be using git-ftp or a custom shell script will upload/push changes to specified server.
Advantages:
  1. This way, developers can focus coding in their test environment. They will just push codes and it will get deployed automatically.
  2. FTP server's login info need not be shared with entire team.
  3. Server-to-server speed is very fast. On slow connection uploading a project to remote FTP may take more time!

We are working on similar lines in a PHP project. My programming skills are poor with Ruby otherwise I would have definitely started coding rather than explaining everything in theory here! :|

@rphl
rphl commented Oct 23, 2012

๐Ÿ‘ Great idea. Would simplfy our deploy process. Most of our customers have only simple ftp access :-/

@paramah
paramah commented Oct 23, 2012

๐Ÿ‘ Nice idea.

@anthonysomerset

its a great idea - would make sense to have deployment controllable more than just automatic from a post-receive hook

eg a flag on the deployment page that only enables the hook if auto deploy is to be enabled, and then a manual button to trigger a manual deploy in either case

@nickel715

๐Ÿ‘ great idea

@koenHuybrechts

+1 Great idea. This would make deployment finally easy to setup.
Also: The repository move to a new project https://github.com/git-ftp/git-ftp

@senny
Contributor
senny commented May 6, 2013

Hey guys

Thanks for your interest in GitLab โค๏ธ

We don't use the Github issue tracker for feature requests. Please use http://feedback.gitlab.com/ for this purpose. Have a look at the contribution guidelines for more information.

This seems to be a popular idea, please open a request on the feedback application and vote for it.

@senny senny closed this May 6, 2013
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment