If you use plugins with your Jekyll blog, chances are you cannot 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 jgdRun it locally:
jgdNow your site is deployed to gh-pages branch of your repo. Done.
Below is a list of all command line options.
-uor--url: The GitHub URL. Defaults to the URL of your current project.-bor--branch: The branch to push your site to. Defaults togh-pages. If the branch does not exist, it will be created.-ror--branch-from: The source branch. Defaults tomaster.-cor--config: Name of the optional deploy config file. See Production variables below for more information.-dor--drafts: Adds the--draftsoption to Jekyll to build draft posts.-hor--help: 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
re-defined in _config-deploy.yml will override those defined in
_config.yml.
Typical usage includes changing site url, disable disqus or ga in
development...., you name it.
While _config-deploy.yml is the default, you may specify any config
file by using the --config command line option.
For example:
jgd -c _config-deploy-develop.yml -r develop -b gh-pages-developThis is how I configure my Jekyll blog to be deployed automatically by travis-ci:
branches:
only:
- master
env:
global:
- secure: ...
install:
- bundle
script: jgd -u http://yegor256:$PASSWORD@github.com/yegor256/blog.gitThe environment variable $PASSWORD is set through
env/global/secure, as explained
in the Travis encryption guide.
Don't forget to add gem require 'jgd' to your Gemfile.
You can use an SSH key instead. First, encrypt the key:
travis encrypt-file id_rsa --addThen, use the URI that starts with git@:
script:
- jgd -u git@github.com:yegor256/blog.gitIn order to build a package locally run below commands.
gem build jgd.gemspec
gem install jgd-<version>.gemFirst, install Ruby 2.3+, Rubygems, and Bundler. Then:
bundle update
bundle exec rake --quiet
./test.shThe build has to be clean. If it is not, submit an issue.
Then, make your changes, make sure the build is still clean, and submit a pull request.