2014-05-29 11:57:30 +02:00
# Middleman Deploy
2012-08-21 01:42:11 +02:00
2014-05-29 11:57:30 +02:00
Deploy your [Middleman ](http://middlemanapp.com/ ) build via **rsync** , **ftp** , **sftp** , or **git** (e.g. [gh-pages on github ](https://help.github.com/articles/creating-project-pages-manually )).
2014-05-24 21:22:05 +02:00
2013-07-21 19:23:06 +02:00
## Installation
2012-08-21 01:42:11 +02:00
2013-07-21 19:23:06 +02:00
```ruby
2014-05-29 11:57:30 +02:00
gem 'middleman-deploy', '~> 2.5'
2013-07-21 19:23:06 +02:00
```
## Usage
2012-08-21 01:42:11 +02:00
2013-07-21 19:23:06 +02:00
```
$ middleman build [--clean]
$ middleman deploy [--build-before]
```
2012-08-21 01:42:11 +02:00
2013-07-21 19:23:06 +02:00
## Possible Configurations
2012-08-21 01:42:11 +02:00
2014-05-29 11:57:30 +02:00
Middleman-deploy can deploy a site via rsync, ftp, sftp, or git. Checkout [the wiki ](https://github.com/tvaughan/middleman-deploy/wiki/_pages ) for advanced set-up options.
2013-11-18 14:37:42 +01:00
2014-05-29 11:57:30 +02:00
### Rsync
2012-10-04 20:22:16 +02:00
2013-07-21 19:23:06 +02:00
Make sure that `rsync` is installed, and activate the extension by adding the
following to `config.rb` :
2012-08-21 01:42:11 +02:00
2013-07-21 19:23:06 +02:00
```ruby
activate :deploy do |deploy|
deploy.method = :rsync
2014-05-29 11:57:30 +02:00
deploy.host = 'www.example.com'
deploy.path = '/srv/www/site'
2013-07-21 19:23:06 +02:00
# Optional Settings
2014-05-29 11:57:30 +02:00
# deploy.user = 'tvaughan' # no default
2013-07-21 19:23:06 +02:00
# deploy.port = 5309 # ssh port, default: 22
# deploy.clean = true # remove orphaned files on remote host, default: false
2014-05-29 11:57:30 +02:00
# deploy.flags = '-rltgoDvzO --no-p --del' # add custom flags, default: -avz
2013-07-21 19:23:06 +02:00
end
```
2012-08-21 01:42:11 +02:00
2013-07-21 19:23:06 +02:00
### Git (e.g. GitHub Pages)
2012-08-21 01:42:11 +02:00
2013-07-21 19:23:06 +02:00
Make sure that `git` is installed, and activate the extension by adding the
following to `config.rb` :
2012-08-21 01:42:11 +02:00
2013-07-21 19:23:06 +02:00
```ruby
activate :deploy do |deploy|
deploy.method = :git
# Optional Settings
2014-05-29 11:57:30 +02:00
# deploy.remote = 'custom-remote' # remote name or git url, default: origin
# deploy.branch = 'custom-branch' # default: gh-pages
2013-11-30 21:28:35 +01:00
# deploy.strategy = :submodule # commit strategy: can be :force_push or :submodule, default: :force_push
2014-05-29 11:57:30 +02:00
# deploy.commit_message = 'custom-message' # commit message (can be empty), default: Automated commit at `timestamp` by middleman-deploy `version`
2013-07-21 19:23:06 +02:00
end
```
2012-08-21 01:42:11 +02:00
2013-07-21 19:23:06 +02:00
If 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'.
2012-08-21 01:42:11 +02:00
2013-11-30 21:28:35 +01:00
Afterwards, the `build` directory will become a git repo.
If you use the force push strategy, this branch will be created on the remote if
it doesn't already exist.
But if you use the submodule strategy, you must first initialize build folder as
a submodule. See `git submodule add` documentation.
2012-08-21 01:42:11 +02:00
2013-07-21 19:23:06 +02:00
### FTP
2012-08-21 01:47:42 +02:00
2013-07-21 19:23:06 +02:00
Activate the extension by adding the following to `config.rb` :
2012-08-21 01:42:11 +02:00
2013-07-21 19:23:06 +02:00
```ruby
activate :deploy do |deploy|
deploy.method = :ftp
2014-05-29 11:57:30 +02:00
deploy.host = 'ftp.example.com'
deploy.path = '/srv/www/site'
deploy.user = 'tvaughan'
deploy.password = 'secret'
2013-07-21 19:23:06 +02:00
end
```
2012-08-21 01:42:11 +02:00
2013-07-21 19:23:06 +02:00
### SFTP
2012-08-21 01:47:42 +02:00
2013-07-21 19:23:06 +02:00
Activate the extension by adding the following to `config.rb` :
2013-05-06 02:49:05 +02:00
2013-07-21 19:23:06 +02:00
```ruby
activate :deploy do |deploy|
deploy.method = :sftp
2014-05-29 11:57:30 +02:00
deploy.host = 'sftp.example.com'
2014-01-18 14:55:50 +01:00
deploy.port = 22
2014-05-29 11:57:30 +02:00
deploy.path = '/srv/www/site'
2013-09-21 17:00:55 +02:00
# Optional Settings
2014-05-29 11:57:30 +02:00
# deploy.user = 'tvaughan' # no default
# deploy.password = 'secret' # no default
end
```
### Run Automatically
To automatically run `middleman build` during `middleman deploy` , turn on the
`build_before` option while activating the deploy extension:
```ruby
activate :deploy do |deploy|
# ...
deploy.build_before = true # default: false
2013-07-21 19:23:06 +02:00
end
```
2013-05-06 02:49:05 +02:00
2014-02-23 05:09:29 +01:00
### Multiple Environments
Deploy your site to more than one configuration using environment variables.
```ruby
# config.rb
case ENV['TARGET'].to_s.downcase
when 'production'
activate :deploy do |deploy|
deploy.method = :rsync
2014-05-29 11:57:30 +02:00
deploy.host = 'www.example.com'
deploy.path = '/srv/www/production-site'
2014-02-23 05:09:29 +01:00
end
else
activate :deploy do |deploy|
deploy.method = :rsync
2014-05-29 11:57:30 +02:00
deploy.host = 'staging.example.com'
deploy.path = '/srv/www/staging-site'
2014-02-23 05:09:29 +01:00
end
end
```
```ruby
# Rakefile
namespace :deploy do
def deploy(env)
puts "Deploying to #{env}"
2014-03-20 16:10:03 +01:00
system "TARGET=#{env} bundle exec middleman deploy"
2014-02-23 05:09:29 +01:00
end
task :staging do
deploy :staging
end
task :production do
deploy :production
end
end
```
$ rake deploy:staging
$ rake deploy:production
2013-07-21 19:23:06 +02:00
## Breaking Changes
2012-10-04 20:22:16 +02:00
2013-07-21 19:23:06 +02:00
* `v0.1.0`
- Removed the `--clean` command-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 in `config.rb` .
- Removed `deploy` from the `after_build` hook. This caused a `deploy` to
be run each time `build` was called. This workflow never made
sense. `deploy` was added to the `after_build` hook simply because it
was available.
2014-05-29 11:57:30 +02:00
## Badges
[![Gem Version ](http://img.shields.io/gem/v/middleman-deploy.svg )][gem]
[![Build Status ](http://img.shields.io/travis/karlfreeman/middleman-deploy.svg )][travis]
[![Code Quality ](http://img.shields.io/codeclimate/github/karlfreeman/middleman-deploy.svg )][codeclimate]
[![Code Coverage ](http://img.shields.io/codeclimate/coverage/github/karlfreeman/middleman-deploy.svg )][codeclimate]
[![Gittip ](http://img.shields.io/gittip/karlfreeman.svg )][gittip]
## Supported Ruby Versions
This library aims to support and is [tested against][travis] the following Ruby
implementations:
- Ruby 2.1.0
- Ruby 2.0.0
- Ruby 1.9.3
- [JRuby][jruby]
- [Rubinius][rubinius]
2013-07-21 19:23:06 +02:00
## Thanks!
2013-07-17 04:54:58 +02:00
2014-05-29 11:57:30 +02:00
A **BIG** thanks to [everyone who has contributed ](https://github.com/tvaughan/middleman-deploy/graphs/contributors )! Almost all pull requests are accepted.
# Credits
Inspiration:
2013-07-17 04:54:58 +02:00
2014-05-29 11:57:30 +02:00
- The rsync task in [Octopress ](https://github.com/imathis/octopress )
2012-08-21 01:56:13 +02:00
2014-05-29 11:57:30 +02:00
[gem]: https://rubygems.org/gems/middleman-deploy
[travis]: http://travis-ci.org/karlfreeman/middleman-deploy
[codeclimate]: https://codeclimate.com/github/karlfreeman/middleman-deploy
[gittip]: https://www.gittip.com/karlfreeman
[jruby]: http://www.jruby.org
[rubinius]: http://rubini.us