2013-12-03 4 views
5

У меня есть сценарий развертывания capistrano, который работает на моем локальном компьютере Windows, но сотрудник на mac попадает в ошибку развертывания. Это на самом деле только его ноутбук, так как он работает и с другими маками, поэтому мне интересно, есть ли какой-то кепристановый кеш, который нужно очистить? Ошибка ...Capistrano :: NoMatchingServersError при развертывании: update_code

* Compressing /var/folders/kv/g4k3rk815sd14948vzf1lhg40000gn/T/20131203013325 to /var/folders/kv/g4k3rk815sd14948vzf1lhg40000gn/T/20131203013325.tar.gz 
    executing locally: tar czf 20131203013325.tar.gz 20131203013325 
    command finished in 114ms 
*** [deploy:update_code] rolling back 
** [deploy:update_code] exception while rolling back: Capistrano::NoMatchingServersError, `deploy:update_code' is only run for servers matching {:except=>{:no_release=>true}}, but no servers matched `deploy:update_code' is only run for servers matching {:except=>{:no_release=>true}}, but no servers matched 

Мой deploy.rb (важные части) являются ...

set :application, "app" 

task :prod do 
    role :app, "10.1.40.123" 
    role :web, "10.1.40.123" 
    role :db, "10.1.40.123", :primary => true 
    set :user, "root" 
    set :password, "password" 
    set :rails_env, "production" 
    set :use_sudo, false 
    load 'deploy/assets' # this line runs rake assets precompile 
    set :os, 'ubuntu' 
    default_environment["LD_LIBRARY_PATH"] = '/opt/oracle/instantclient_12_1' 
end 
set :repository, "ssh://[email protected]/opt/git/hub/app.git" 
set :deploy_to, "/srv/www/#{application}" 
set :deploy_via, :copy 
set :keep_releases, 5 

set :scm, "git" 
set :branch, "master" 

after 'deploy:update_code', 'deploy:symlink_shared', "deploy:migrate","deploy:restart" 

Он способен развернуть другие приложения с помощью Capistrano, мы используем Capistrano 2

+0

Какая драгоценность и рубиновая версия Capistrano вы используете, он использует и другие маки, используя? – omarvelous

+0

capistrano 2.15.5 - рельсы 3.2.13 - ruby ​​1.9.3? не 100% уверены в его рубиновой версии. – HelloWorld

+0

наверняка его> ruby ​​1.8 – HelloWorld

ответ

0

Похоже, вы пытаетесь развернуть на несколько этапов с помощью настраиваемой задачи вместо использования multistage extension. Таким образом, при запуске cap prod вы фактически не развертываете, а при запуске cap deploy вы не устанавливаете роли, что вызывает ошибку. Таким образом, решение было бы переписать deploy.rb что-то вроде следующего:

set :stages, %w(prod staging) 
set :default_stage, "staging" 
require 'capistrano/ext/multistage' 

set :application, "app" 
set :repository, "ssh://[email protected]/opt/git/hub/app.git" 
set :deploy_to, "/srv/www/#{application}" 
set :deploy_via, :copy 
set :keep_releases, 5 

set :scm, "git" 
set :branch, "master" 

after 'deploy:update_code', 'deploy:symlink_shared', "deploy:migrate","deploy:restart" 

Тогда в вашем config/deploy/prod.rb вы должны иметь свой Prod-связанные настройки:

role :app, "10.1.40.123" 
role :web, "10.1.40.123" 
role :db, "10.1.40.123", :primary => true 
set :user, "root" 
set :password, "password" 
set :rails_env, "production" 
set :use_sudo, false 
load 'deploy/assets' # this line runs rake assets precompile 
set :os, 'ubuntu' 
default_environment["LD_LIBRARY_PATH"] = '/opt/oracle/instantclient_12_1' 

Таким образом, вы будете способный развернуть на производство с cap prod deploy (или с cap deploy тоже, если вы измените set :default_stage, "staging" на set :default_stage, "prod").

+0

На данный момент у меня только одна среда для этого приложения, но я использую развертывание cap cap. У меня есть тот же самый код, что и в моем вопросе для другого приложения (за исключением git location и appname), и он может развернуть, поэтому я не думаю, что это синтаксис самого кода. Может быть, ошибается, хотя, кто знает, просто странная ошибка в целом. – HelloWorld

+0

Какой смысл иметь задачу «prod»? Попробуйте удалить 'task: prod do' и соответствующий' end' (оставив код между ними на месте), тогда 'cap deploy' должен работать правильно. – bredikhin

+0

Попробуем и дадим вам знать, спасибо. – HelloWorld

Смежные вопросы