Deploys a middleman built site via rsync, ftp, sftp, or git (e.g. gh-pages on github).
Add this to the Gemfile of the repository of your middleman site:
gem "middleman-deploy"and run bundle install.
$ middleman build [--clean]
$ middleman deploy [--build-before]
To automatically run middleman build during middleman deploy, turn on the
build_before option while activating the deploy extension:
activate :deploy do |deploy|
# ...
deploy.build_before = true # default: false
endMiddleman-deploy can deploy a site via rsync, ftp, sftp, or git.
Make sure that rsync is installed, and activate the extension by adding the
following to config.rb:
activate :deploy do |deploy|
deploy.method = :rsync
deploy.host = "www.example.com"
deploy.path = "/srv/www/site"
# Optional Settings
# deploy.user = "tvaughan" # no default
# deploy.port = 5309 # ssh port, default: 22
# deploy.clean = true # remove orphaned files on remote host, default: false
endMake sure that git is installed, and activate the extension by adding the
following to config.rb:
activate :deploy do |deploy|
deploy.method = :git
# Optional Settings
# deploy.remote = "custom-remote" # remote name or git url, default: origin
# deploy.branch = "custom-branch" # default: gh-pages
endIf you use a remote name, you must first add it using git remote add. Run
git remote -v to see a list of possible remote names. If you use a git url,
it must end with '.git'.
Afterwards, the build directory will become a git repo. This branch will be
created on the remote if it doesn't already exist.
Activate the extension by adding the following to config.rb:
activate :deploy do |deploy|
deploy.method = :ftp
deploy.host = "ftp.example.com"
deploy.user = "tvaughan"
deploy.password = "secret"
deploy.path = "/srv/www/site"
endActivate the extension by adding the following to config.rb:
activate :deploy do |deploy|
deploy.method = :sftp
deploy.host = "sftp.example.com"
deploy.user = "tvaughan"
deploy.password = "secret"
deploy.path = "/srv/www/site"
endv0.1.0- Removed the
--cleancommand-line option. This option only applied to the rsync deploy method. The idea going forward is that command-line options must apply to all deploy methods. Options that are specific to a deploy method will only be available inconfig.rb. - Removed
deployfrom theafter_buildhook. This caused adeployto be run each timebuildwas called. This workflow never made sense.deploywas added to theafter_buildhook simply because it was available.
- Removed the
A BIG thanks to everyone who has contributed! Almost all pull requests are accepted.
Inspired by the rsync task in Octopress.
