1

デフォルト ステージ ( ) を指定する短いマルチステージ カピストラーノ スクリプトがありますset :default_stage, :stagingが、コマンド ラインで別のステージ (例cap production deploy) を指定すると、ステージング タスクとプロダクション タスクの両方が実行されることがわかりました。

$ cap production deploy
    triggering load callbacks
  * 2013-06-19 06:38:34 executing `staging'
  * 2013-06-19 06:38:34 executing `production'

その結果、デプロイ プロセスはローカル リポジトリである staging.rb で指定された場所で scm を探します。そのため、本番サーバーには存在せず、デプロイは失敗します。

コマンド ラインで別のステージを指定したときに、デプロイ スクリプトにデフォルト ステージを指定してロードしないようにすることはできますか?


ここで私のデプロイファイルを見ることができます:

deploy.rb

set :stages, [:staging, :production]
set :default_stage, :staging
require 'capistrano/ext/multistage'

set :repository,  "myrepo"
set :scm, :git
set :scm_user, "deploy"

set :user, "deploy"
set (:deploy_to) {"/var/www/clu2/#{application}/"}
set :use_sudo, false
default_run_options[:pty] = true

production.rb

set :application, "production"
set :rails_env, 'production'
set :deploy_to, "/var/www/myapp/"
set :branch, 'develop'

role :app, 'trustedquote.com'
role :web, 'trustedquote.com'
role :db, 'trustedquote.com', :primary => true

staging.rb

set :application, "staging"
set :rails_env, 'production'
set :repository,  "file:///git/myrepo.git"
set :local_repository, "file://."

set :branch, 'develop'

role :app, 'mylocation'
role :web, 'mylocation'
role :db, 'mylocation', :primary => true
4

1 に答える 1

2

@CDub の意見に感謝します。

deploy.rb のステージ名をシンボルから文字列に変更したところ、違いが生まれました。

set :stages, %w[staging production]
set :default_stage, 'staging'
于 2013-06-19T18:35:56.517 に答える