2010-10-04 08:33:48 -04:00
|
|
|
## Capistrano
|
|
|
|
|
2011-09-24 10:32:07 -04:00
|
|
|
[![Build
|
2013-04-02 14:05:27 -04:00
|
|
|
Status](https://secure.travis-ci.org/capistrano/capistrano.png)](http://travis-ci.org/capistrano/capistrano)[![Code Climate](https://codeclimate.com/badge.png)](https://codeclimate.com/github/capistrano/capistrano)
|
2011-09-24 10:32:07 -04:00
|
|
|
|
|
|
|
|
Release 2.7.0
A fairly substantial release. There are fixes so that current_release
works
during dry-runs, (although, apparently still not with bundler.)
The test-suite was also modified to work with Ruby 1.9.2, except in one
case
where Ruby 1.9.x calls `to_ary` and `to_a` on mocks, which still makes
an
error. 1.9.x has always been supported, but due to lack of maintenance
on my
part the tests didn't ever pass.
The `start`, `stop` and `restart` tasks have been reduced to mere hooks
into
which extensions can define their own functionality.
The `readme` was also slightly improved, simply tweaks to express how
best to
run the test suite.
* Ensure dry-run works with `:current_release` variable (Carol Nichols)
* Added a new variable `:git_submodules_recursive`, setting the value to
* false
will ensure Git doesn't recursively initialize and checkout submodules.
(Konstantin Kudryashov)
* Added an additional task option, `:on_no_matching_servers`, setting
* the
value to `:continue` will ensure tasks with no matched servers continue
without error, instead of raising `Capistrano::NoMatchingServersError`
as was
the previous behaviour. (Chris Griego)
A huge thanks to all contributors, as always!
Remember: @capistranorb on twitter for news.
2011-08-02 20:11:19 -04:00
|
|
|
Capistrano is a utility and framework for executing commands in parallel on
|
|
|
|
multiple remote machines, via SSH. It uses a simple DSL (borrowed in part from
|
|
|
|
[Rake](http://rake.rubyforge.org/)) that allows you to define _tasks_, which may
|
|
|
|
be applied to machines in certain roles. It also supports tunneling connections
|
|
|
|
via some gateway machine to allow operations to be performed behind VPN's and
|
|
|
|
firewalls.
|
2010-10-04 08:33:48 -04:00
|
|
|
|
Release 2.7.0
A fairly substantial release. There are fixes so that current_release
works
during dry-runs, (although, apparently still not with bundler.)
The test-suite was also modified to work with Ruby 1.9.2, except in one
case
where Ruby 1.9.x calls `to_ary` and `to_a` on mocks, which still makes
an
error. 1.9.x has always been supported, but due to lack of maintenance
on my
part the tests didn't ever pass.
The `start`, `stop` and `restart` tasks have been reduced to mere hooks
into
which extensions can define their own functionality.
The `readme` was also slightly improved, simply tweaks to express how
best to
run the test suite.
* Ensure dry-run works with `:current_release` variable (Carol Nichols)
* Added a new variable `:git_submodules_recursive`, setting the value to
* false
will ensure Git doesn't recursively initialize and checkout submodules.
(Konstantin Kudryashov)
* Added an additional task option, `:on_no_matching_servers`, setting
* the
value to `:continue` will ensure tasks with no matched servers continue
without error, instead of raising `Capistrano::NoMatchingServersError`
as was
the previous behaviour. (Chris Griego)
A huge thanks to all contributors, as always!
Remember: @capistranorb on twitter for news.
2011-08-02 20:11:19 -04:00
|
|
|
Capistrano was originally designed to simplify and automate deployment of web
|
|
|
|
applications to distributed environments, and originally came bundled with a set
|
|
|
|
of tasks designed for deploying Rails applications.
|
2010-10-04 08:33:48 -04:00
|
|
|
|
|
|
|
## Documentation
|
|
|
|
|
2012-08-07 11:07:50 -04:00
|
|
|
* [https://github.com/capistrano/capistrano/wiki](https://github.com/capistrano/capistrano/wiki)
|
2010-10-04 08:33:48 -04:00
|
|
|
|
|
|
|
## DEPENDENCIES
|
|
|
|
|
2011-04-27 13:22:26 -04:00
|
|
|
* [Net::SSH](http://net-ssh.rubyforge.org)
|
|
|
|
* [Net::SFTP](http://net-ssh.rubyforge.org)
|
|
|
|
* [Net::SCP](http://net-ssh.rubyforge.org)
|
|
|
|
* [Net::SSH::Gateway](http://net-ssh.rubyforge.org)
|
|
|
|
* [HighLine](http://highline.rubyforge.org)
|
2012-08-13 18:44:45 -04:00
|
|
|
* [Ruby](http://www.ruby-lang.org/en/) ≥ 1.8.7
|
2010-10-04 08:33:48 -04:00
|
|
|
|
Release 2.7.0
A fairly substantial release. There are fixes so that current_release
works
during dry-runs, (although, apparently still not with bundler.)
The test-suite was also modified to work with Ruby 1.9.2, except in one
case
where Ruby 1.9.x calls `to_ary` and `to_a` on mocks, which still makes
an
error. 1.9.x has always been supported, but due to lack of maintenance
on my
part the tests didn't ever pass.
The `start`, `stop` and `restart` tasks have been reduced to mere hooks
into
which extensions can define their own functionality.
The `readme` was also slightly improved, simply tweaks to express how
best to
run the test suite.
* Ensure dry-run works with `:current_release` variable (Carol Nichols)
* Added a new variable `:git_submodules_recursive`, setting the value to
* false
will ensure Git doesn't recursively initialize and checkout submodules.
(Konstantin Kudryashov)
* Added an additional task option, `:on_no_matching_servers`, setting
* the
value to `:continue` will ensure tasks with no matched servers continue
without error, instead of raising `Capistrano::NoMatchingServersError`
as was
the previous behaviour. (Chris Griego)
A huge thanks to all contributors, as always!
Remember: @capistranorb on twitter for news.
2011-08-02 20:11:19 -04:00
|
|
|
If you want to run the tests, you'll also need to install the dependencies with
|
|
|
|
Bundler, see the `Gemfile` within .
|
2010-10-04 08:33:48 -04:00
|
|
|
|
|
|
|
## ASSUMPTIONS
|
|
|
|
|
Release 2.7.0
A fairly substantial release. There are fixes so that current_release
works
during dry-runs, (although, apparently still not with bundler.)
The test-suite was also modified to work with Ruby 1.9.2, except in one
case
where Ruby 1.9.x calls `to_ary` and `to_a` on mocks, which still makes
an
error. 1.9.x has always been supported, but due to lack of maintenance
on my
part the tests didn't ever pass.
The `start`, `stop` and `restart` tasks have been reduced to mere hooks
into
which extensions can define their own functionality.
The `readme` was also slightly improved, simply tweaks to express how
best to
run the test suite.
* Ensure dry-run works with `:current_release` variable (Carol Nichols)
* Added a new variable `:git_submodules_recursive`, setting the value to
* false
will ensure Git doesn't recursively initialize and checkout submodules.
(Konstantin Kudryashov)
* Added an additional task option, `:on_no_matching_servers`, setting
* the
value to `:continue` will ensure tasks with no matched servers continue
without error, instead of raising `Capistrano::NoMatchingServersError`
as was
the previous behaviour. (Chris Griego)
A huge thanks to all contributors, as always!
Remember: @capistranorb on twitter for news.
2011-08-02 20:11:19 -04:00
|
|
|
Capistrano is "opinionated software", which means it has very firm ideas about
|
|
|
|
how things ought to be done, and tries to force those ideas on you. Some of the
|
|
|
|
assumptions behind these opinions are:
|
2010-10-04 08:33:48 -04:00
|
|
|
|
|
|
|
* You are using SSH to access the remote servers.
|
Release 2.7.0
A fairly substantial release. There are fixes so that current_release
works
during dry-runs, (although, apparently still not with bundler.)
The test-suite was also modified to work with Ruby 1.9.2, except in one
case
where Ruby 1.9.x calls `to_ary` and `to_a` on mocks, which still makes
an
error. 1.9.x has always been supported, but due to lack of maintenance
on my
part the tests didn't ever pass.
The `start`, `stop` and `restart` tasks have been reduced to mere hooks
into
which extensions can define their own functionality.
The `readme` was also slightly improved, simply tweaks to express how
best to
run the test suite.
* Ensure dry-run works with `:current_release` variable (Carol Nichols)
* Added a new variable `:git_submodules_recursive`, setting the value to
* false
will ensure Git doesn't recursively initialize and checkout submodules.
(Konstantin Kudryashov)
* Added an additional task option, `:on_no_matching_servers`, setting
* the
value to `:continue` will ensure tasks with no matched servers continue
without error, instead of raising `Capistrano::NoMatchingServersError`
as was
the previous behaviour. (Chris Griego)
A huge thanks to all contributors, as always!
Remember: @capistranorb on twitter for news.
2011-08-02 20:11:19 -04:00
|
|
|
* You either have the same password to all target machines, or you have public
|
|
|
|
keys in place to allow passwordless access to them.
|
2010-10-04 08:33:48 -04:00
|
|
|
|
|
|
|
Do not expect these assumptions to change.
|
|
|
|
|
|
|
|
## USAGE
|
|
|
|
|
|
|
|
In general, you'll use Capistrano as follows:
|
|
|
|
|
|
|
|
* Create a recipe file ("capfile" or "Capfile").
|
|
|
|
* Use the `cap` script to execute your recipe.
|
|
|
|
|
|
|
|
Use the `cap` script as follows:
|
|
|
|
|
2012-08-17 16:31:55 -04:00
|
|
|
cap sometask
|
2010-10-04 08:33:48 -04:00
|
|
|
|
Release 2.7.0
A fairly substantial release. There are fixes so that current_release
works
during dry-runs, (although, apparently still not with bundler.)
The test-suite was also modified to work with Ruby 1.9.2, except in one
case
where Ruby 1.9.x calls `to_ary` and `to_a` on mocks, which still makes
an
error. 1.9.x has always been supported, but due to lack of maintenance
on my
part the tests didn't ever pass.
The `start`, `stop` and `restart` tasks have been reduced to mere hooks
into
which extensions can define their own functionality.
The `readme` was also slightly improved, simply tweaks to express how
best to
run the test suite.
* Ensure dry-run works with `:current_release` variable (Carol Nichols)
* Added a new variable `:git_submodules_recursive`, setting the value to
* false
will ensure Git doesn't recursively initialize and checkout submodules.
(Konstantin Kudryashov)
* Added an additional task option, `:on_no_matching_servers`, setting
* the
value to `:continue` will ensure tasks with no matched servers continue
without error, instead of raising `Capistrano::NoMatchingServersError`
as was
the previous behaviour. (Chris Griego)
A huge thanks to all contributors, as always!
Remember: @capistranorb on twitter for news.
2011-08-02 20:11:19 -04:00
|
|
|
By default, the script will look for a file called one of `capfile` or
|
2013-02-25 11:23:38 -05:00
|
|
|
`Capfile`. The `sometask` text indicates which task to execute. You can do
|
Release 2.7.0
A fairly substantial release. There are fixes so that current_release
works
during dry-runs, (although, apparently still not with bundler.)
The test-suite was also modified to work with Ruby 1.9.2, except in one
case
where Ruby 1.9.x calls `to_ary` and `to_a` on mocks, which still makes
an
error. 1.9.x has always been supported, but due to lack of maintenance
on my
part the tests didn't ever pass.
The `start`, `stop` and `restart` tasks have been reduced to mere hooks
into
which extensions can define their own functionality.
The `readme` was also slightly improved, simply tweaks to express how
best to
run the test suite.
* Ensure dry-run works with `:current_release` variable (Carol Nichols)
* Added a new variable `:git_submodules_recursive`, setting the value to
* false
will ensure Git doesn't recursively initialize and checkout submodules.
(Konstantin Kudryashov)
* Added an additional task option, `:on_no_matching_servers`, setting
* the
value to `:continue` will ensure tasks with no matched servers continue
without error, instead of raising `Capistrano::NoMatchingServersError`
as was
the previous behaviour. (Chris Griego)
A huge thanks to all contributors, as always!
Remember: @capistranorb on twitter for news.
2011-08-02 20:11:19 -04:00
|
|
|
"cap -h" to see all the available options and "cap -T" to see all the available
|
|
|
|
tasks.
|
2010-10-04 08:33:48 -04:00
|
|
|
|
2011-09-24 10:06:35 -04:00
|
|
|
## CONTRIBUTING:
|
|
|
|
|
|
|
|
* Fork Capistrano
|
|
|
|
* Create a topic branch - `git checkout -b my_branch`
|
|
|
|
* Rebase your branch so that all your changes are reflected in one
|
|
|
|
commit
|
|
|
|
* Push to your branch - `git push origin my_branch`
|
|
|
|
* Create a Pull Request from your branch, include as much documentation
|
|
|
|
as you can in the commit message/pull request, following these
|
2013-02-22 15:18:25 -05:00
|
|
|
[guidelines on writing a good commit message](http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html)
|
2011-09-24 10:06:35 -04:00
|
|
|
* That's it!
|
|
|
|
|
|
|
|
|
2010-10-04 08:33:48 -04:00
|
|
|
## LICENSE:
|
|
|
|
|
|
|
|
Permission is hereby granted, free of charge, to any person obtaining
|
|
|
|
a copy of this software and associated documentation files (the
|
|
|
|
'Software'), to deal in the Software without restriction, including
|
|
|
|
without limitation the rights to use, copy, modify, merge, publish,
|
|
|
|
distribute, sublicense, and/or sell copies of the Software, and to
|
|
|
|
permit persons to whom the Software is furnished to do so, subject to
|
|
|
|
the following conditions:
|
|
|
|
|
|
|
|
The above copyright notice and this permission notice shall be
|
|
|
|
included in all copies or substantial portions of the Software.
|
|
|
|
|
|
|
|
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
|
|
|
|
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
|
|
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
|
|
|
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
|
|
|
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
|
|
|
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
|
|
|
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|