gohugoio / hugo

The world’s fastest framework for building websites.
https://gohugo.io
Apache License 2.0
74.82k stars 7.46k forks source link

deploying from hugo? #1543

Closed arschles closed 6 years ago

arschles commented 8 years ago

Wondering if there's something like a hugo deploy command that can generate and deploy a site to somewhere (Amazon S3, Heroku, Google Cloud Storage, ....)?

If not, I'd like to propose one. I'm happy to write a more complete proposal and start/contribute to the effort.

Looking forward to hearing back.

PhiLhoSoft commented 8 years ago

I have asked myself the same question when I looked at Hugo. I found the thread http://discuss.gohugo.io/t/deployment-workflow/90 which can be relevant. I was surprised to see deployment isn't built in Hugo, because I found relevant commands or plugins in tools like Hexo for example. Support for FTP seems important, among other things: cheap / free hosts doesn't support SSH or RSync, etc.

bep commented 8 years ago

I was surprised to see deployment isn't built in Hugo

I'm surprised by your surprise.

It would be nice if Hugo had some support in this department -- but I also believe in the Unix mindset: Do one thing and to it good! There are lots of tools doing deployment very well, and probably a better job than Hugo would ever do. Hugo's deployment story may even be slightly better than some of the others; the simple static binary means that doing automated deployment with Docker, Wercker et. al. is fairly straight forward.

PhiLhoSoft commented 8 years ago

Well, sure RSync and such are nice, but as said we are sometime stuck with FTP. If the deployment was built in the tool, since it knows which files has changed (it does? Hugo does incremental builds or rebuilds everything every time?), it would be able to upload only the needed files.

bep commented 8 years ago

it would be able to upload only the needed files.

No, Hugo builds everything -- there are no incremental builds.

PhiLhoSoft commented 8 years ago

OK, I suppose it is fast enough to allow this... And then, the smart deployment idea falls apart, making the need for an automation less compelling, indeed. Thanks.

abhi1010 commented 8 years ago

What kind of use case scenario are you looking at for deployment?

There are tons of blog articles for hugo that may help you further.

On Fri, Nov 6, 2015 at 3:26 PM, Philippe Lhoste notifications@github.com wrote:

OK, I suppose it is fast enough to allow this... And then, the smart deployment idea falls apart, making the need for an automation less compelling, indeed. Thanks.

— Reply to this email directly or view it on GitHub https://github.com/spf13/hugo/issues/1543#issuecomment-154333415.

arschles commented 8 years ago

I'm thinking of uploading the public folder to s3 or google cloud storage. right now, I upload to gcs using the standard gsutil tool and that's all fine - no real complaints there. I'm more curious at this point if deployment is something that the core contributors have considered / are interested in

mindok commented 8 years ago

Hi all - I just wrote a simple ftp deployment tool https://github.com/mindok/hugodeploy. It keeps a local copy of what has been deployed already and does a binary compare of hugo generated files with this local copy in order to avoid resending unchanged content (images, js etc). The paint is still drying on it (it's less than a week since coding began) and there are a couple of minor issues to tidy up (e.g. setting ftp directory to deploy to - see issues), but hopefully it works for the scenario @PhiLhoSoft refers to.

There's a little bit of work to have alternate deployment targets as per @arschles request but it is architected to allow this. It's designed to minimise transfer times - those of us not based in the US do have to consider this...

Any suggestions welcome.

PhiLhoSoft commented 8 years ago

@mindok Well done! I moved to Hexo, not (only) for deployment but (mostly) because I needed a more flexible Markdown parser (accepting newline as br mark). And because I can hack JS, not Go. But it is still good to see new tools added to interesting frameworks.

stuartweir commented 8 years ago

For Digital Ocean, they have https://godoc.org/github.com/digitalocean/godo, which (from my understanding of the API), allows you to interact with your droplets/etc using this package. Could definitely be useful for Hugo deploys to DO.

elidourado commented 8 years ago

How about a hugo deploy command that simply executes deploy.sh in the project's root directory if the file exists?

moorereason commented 8 years ago

@elidourado, that's what shells are for. :-1:

nathany commented 8 years ago

Right now I use s3up, a tool I wrote that fetches md5 hashes from s3 and updates/deletes any necessary files. I run it from CI using configs in hugo-deploy.

IMO, using an object store and CDN like S3+CloudFront or GCS is the simplest and least likely to go down. It's not what everyone wants, but a good default for the less technical.

Whether integrated, a plugin (separate process), or a sanctioned standalone tool, I quite like the idea of providing some de facto standard deployment options.

bep commented 7 years ago

This issue has been automatically marked as stale because it has not been commented on for at least six months.

The resources of the Hugo team are limited, and so we are asking for your help.

If this is a bug and you can still reproduce this error on the master branch, please reply with all of the information you have about it in order to keep the issue open.

If this is a feature request, and you feel that it is still relevant and valuable, please tell us why.

This issue will automatically be closed in the near future if no further activity occurs. Thank you for all your contributions.

vladcodeimpaler commented 5 years ago

I wrote this little script because I couldn't find a good solution. Not ideal because it uses ssh and sftp, but it does the trick well: http://blog.codeimpaler.com/2019/07/publish-hugo-blog-ftp-windows-batch-file.html

github-actions[bot] commented 2 years ago

This issue has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.