#deployment #capistrano
#развертывание #capistrano
Вопрос:
Я пытаюсь получить многоступенчатое развертывание capistrano на своих производственных и промежуточных серверах. Вот мой deploy.rb
файл (детали scm опущены):
require 'bundler/capistrano'
require 'whenever/capistrano'
set :application, "myapp"
set :stages, %w{staging, production}
set :default_stage, "staging"
require 'capistrano/ext/multistage'
set :deploy_to, "/webapps/myapp"
set(:domain) { "#{domain}" }
role(:web) { domain }
role(:app) { domain }
role(:db, :primary => true) { domain }
default_run_options[:pty] = true
namespace :one do
task :foo do
puts "foo"
end
end
И в config/deploy/production.rb
:
set :domain, "production.com"
set :user, "prod"
config/deploy/staging.rb
:
set :domain, "shootsystage.com"
set :user, "stage"
Ничего слишком экзотического не происходит (я думаю). Запуск cap production one:foo
работает нормально. Но выполнение cap staging one:foo
приводит к:
the task `staging' does not exist
Что происходит?
Ответ №1:
Похоже, небольшой фрагмент синтаксиса укусил меня в задницу. Это должно быть:
set :stages, %w{staging production}
Обратите внимание на отсутствие запятых в %w{}
. Ffffuuuuuuuuuuuu…
Комментарии:
1. ой — меня тоже укусили этим — раздражает, поскольку, конечно, система сообщает вам, что может найти промежуточную стадию, но никаких признаков производства.