One line deployment of your site to gh-pages
Do you want to easily deploy your site to Github pages?
OK, here we go...
-
You have to upload your complete blog/site to a new Github repository (you know how to do it... if not, probably you need to learn some things before try this one, hehe). As a plus, now your blog/site is version-controlled!
-
Almost for sure, your site/blog lives in the master branch of the new repository, but you need to generated a
gh-pagesbranch to push yourbuildoroutputfolder, I mean your site/blog content to deploy... not all the machinery of your site/blog platform (Nikola in my case):
git checkout -b gh-pagesgit rm -rf .git commit -am "First commit to gh-pages branch"git push origin gh-pages
- Now, we will use a git-subtree technique to push the
buildoroutputcontent to thegh-pagesbranch:
-
git checkout master -
git push origin `git subtree split --prefix output gh-pages`:gh-pages --forceSweet line... uhh ;-)
- Finally, you will need to run the following line every time you want to update your site/blog!
git subtree push --prefix output origin gh-pages
Note: Are you getting git errors? Just use the sweet line again and force the update...
If you are using Nikola, you can add some of this lines to the DEPLOY_COMMANDS in your conf.py file and just run nikola deploy after building your site/blog.
More easier... impossible... ;-)
Damián.
UPDATE: Not enough happy with step 3 and 4 (essentially because of some git errors), I figured out a cleaner solution:
New 3. Now, we will use a git-subtree technique to push the build or output content to the gh-pages branch. You will need to run the following lines every time you want to update your site/blog!
-
git checkout master# you can avoid this line if you are in master... -
git subtree split --prefix output -b gh-pages# create a local gh-pages branch containing the splitted output folder -
git push -f origin gh-pages:gh-pages# force the push of the gh-pages branch to the remote gh-pages branch at origin -
git branch -D gh-pages# delete the local gh-pages because you will need it: ref
Btw, don't forget this blog post is an ipynb file itself! So, you can download it from the "Source" link at the top of the post if you want to play with it ;-)
Comments powered by Disqus