build your Middleman site and push it to your gh-pages branch
Ruby Shell
Latest commit b97e49e Oct 16, 2016 @hovancik committed on GitHub v0.2.0 (#7)

README.md

Build Status Gem Version Dependency Status

What is mgd ?

mgd stands for middleman-github-deploy and is a fork of jgd.

mgd will automatically build your Middleman blog and push it to your gh-pages branch (or any other branch of your choice).

Installation and Usage

It is assumed that your blog is in the home directory of your repo.

Install it first:

gem install mgd

Run it locally:

mgd

Now your site is deployed to gh-pages branch of your repo. Done.

PS. You can also specify target branch, with is gh-pages by default. Use --branch command line option.

Ruby ad rubygems versions

Everything should work fine with ruby > 2.0.

There is a bug with rubygems (https://github.com/rubygems/rubygems/issues/1420), so if you're getting error like this:

$ mgd
/Users/user/.rvm/rubies/ruby-2.3.1/lib/ruby/2.3.0/rubygems/specification.rb:2158:in `method_missing': undefined method `this' for #<Gem::Specification:0x3fc9e849c75c trollop-2.1.2> (NoMethodError)
        from /Users/user/.rvm/rubies/ruby-2.3.1/lib/ruby/2.3.0/rubygems/specification.rb:1057:in `find_active_stub_by_path'
        from /Users/user/.rvm/rubies/ruby-2.3.1/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:64:in `require'
        from /Users/user/.rvm/gems/ruby-2.3.1@gemset/gems/mgd-0.1.0/bin/mgd:4:in `<top (required)>'
        from /Users/user/.rvm/gems/ruby-2.3.1@gemset/bin/mgd:23:in `load'
        from /Users/user/.rvm/gems/ruby-2.3.1@gemset/bin/mgd:23:in `<main>'
        from /Users/user/.rvm/gems/ruby-2.3.1@gemset/bin/ruby_executable_hooks:15:in `eval'
        from /Users/user/.rvm/gems/ruby-2.3.1@gemset/bin/ruby_executable_hooks:15:in `<main>'

check what is your gem version, should be higher than 2.6.3:

$ gem --version

you can update it via:

$ gem update --system  # you might need to be an administrator or root

Deploying with Travis

This is how you might configure your blog to be deployed automatically by travis-ci:

branches:
  only:
    - master
env:
  global:
    - secure: ...
install:
  - bundle
script: mgd -u http://yourname:$PASSWORD@github.com/yourname/blog.git

The environment variable $PASSWORD is set through env/global/secure, as explained here.

Don't forget to add gem require 'mgd' to your Gemfile.

You can use SSH key instead. First, you should encrypt it:

$ travis encrypt-file id_rsa --add

Then, use the URI that starts with git@:

script:
  - mgd -u git@github.com:yourname/blog.git

Read also this article.