I'm in the process of upgrading from Capistrano 2 to Capistrano 3. In Cap 2 I was using the following to take a command line argument as the branch name (otherwise default to master
)
set :branch, fetch(:branch, "master")
If I called cap deploy
it would deploy the master branch. But it also let me do something like this:
cap deploy -S branch=foo
Which would deploy the foo
branch.
Now, in Capistrano 3, if I try to run the above I get an error: invalid option: -S
.
What's the proper way to pass an argument via the command line now?
What I ended up doing was setting an ENV
variable.
So now I can call
cap production deploy branch=mybranch
And it will deploy mybranch
. If I run a simple cap production deploy
it will deploy the default branch (master
if you don't set one, but I've changed mine below to default
to demonstrate)
This is the code I put in my deploy.rb
file:
set :branch, "default"
if ENV['branch']
set :branch, ENV['branch']
end