If you use some plugins with your Jekyll blog, chances are you can not have your blog generated by GitHub Pages. First of all, because they do not allow custom plugins. This is where jekyll-github-deploy (a.k.a. jgd) comes in: it will automatically build your Jekyll blog and push it to your gh-pages branch. You may want to read this blog post before you start using this tool: Deploy Jekyll to GitHub Pages.
It is assumed that your blog is in the home directory of your repo.
Install it first:
$ gem install jgd
Run it locally:
Now your site is deployed to
gh-pages branch of your repo. Done.
Below is a list of all command line options.
||The GitHub URL. Defaults to th URL of your current project.|
||The branch to push your site to. Defaults to
||The source branch. Defaults to
||Name of the optional deploy config file. See Production variables below for more information.|
||Displays a list of all options.|
If you need to have different values for your deployed blog, just add a
_config-deploy.yml file in your project's root and you're set. Values
_config-deploy.yml will override those defined in
Typical usage includes changing site
url, disable disqus or ga in
development...., you name it.
_config-deploy.yml is the default, you may specify any config
file by using the
--config command line option.
$ jgd -c _config-deploy-develop.yml -r develop -b gh-pages-develop
Deploying with Travis
branches: only: - master env: global: - secure: ... install: - bundle script: jgd -u http://yegor256:[email protected]/yegor256/blog.git
The environment variable
$PASSWORD is set through
env/global/secure, as explained
Don't forget to add
gem require 'jgd' to your
You can use SSH key instead. First, you should encrypt it:
$ travis encrypt-file id_rsa --add
Then, use the URI that starts with
script: - jgd -u [email protected]:yegor256/blog.git
Read also this article.
In order to build a package locally run below commands.
gem build jgd.gemspec gem install jgd-<version>.gem