3

私はこれを一日中調査してきましたが、答えが見つからないようですので、ここに投稿しています。カピストラーノ マルチステージを使用して ruby​​ on rails アプリをデプロイしていますが、デプロイが自動化されるまでは問題ありません。

これがインタラクティブに実行されるときはいつでも問題はなく、デプロイは問題なく完了します。現在、ci (Teamcity) を使用して、ビルドが成功するたびにステージング環境にデプロイすることを検討しています。

CI サーバーで、「ssh server1」または「ssh deploy@server1」を実行すると問題なく動作します。

私のciステージは次のようになり、コマンドラインからも正常に動作します

set :branch, "development"
set :rails_env, "staging"
set :user, "deploy"

$:.unshift(File.expand_path('./lib', ENV['rvm_path']))
require 'rvm/capistrano'
set :rvm_ruby_string, 'ruby-1.9.2-p290'
set :rvm_bin_path, "/usr/local/rvm/bin/"

default_run_options[:pty] = true
ssh_options[:verbose] = :debug 
default_run_options[:pty] = true 

role :app, "server1"
role :web, "server1"
role :utility, "server2"
role :db,  "server1", :primary => true

私の deploy.rb は非常に大きいですが、これらは関連する設定です

# Repo Settings
set :repository,  "git@github.com:myrepo/myrepo.git"
set :scm, "git"
set :checkout, 'export'
set :copy_exclude, ".git/*"
set :deploy_via, :remote_cache

# General Settings
default_run_options[:pty] = true
set :ssh_options, { :forward_agent => true }
set :keep_releases, 20
set :use_sudo, false

Team City の下で、最終ビルド ステップとして、単純に「cap ci deploy:setup」というコマンド ライン タスクを追加しました。これは、完全なデプロイよりも簡単なテストです。

キャップログは私にこれを示しています:

[03:27:38]: [Step 4/10] D, [2011-11-21T03:27:38.103284 #22035] DEBUG -- net.ssh.authentication.session[70ca88]: allowed methods: publickey,password
[03:27:38]: [Step 4/10] E, [2011-11-21T03:27:38.103328 #22035] ERROR -- net.ssh.authentication.session[70ca88]: all authorization methods failed (tried publickey)

同じことがcronjobから発生しているようです-しかし、そこにログがありません

Teamcity とおそらく cron が完全な環境をロードしていないため、これは環境の問題のように思えます。とりわけ、sshキーをcapファイルに直接指定しようとしましたが、効果がないようです。

もう1つの奇妙な点は、デプロイしようとしているリモートサーバーで、auth.logに接続の試行が表示されないため、サーバー側からこれをトラブルシューティングすることはオプションではないようです。

だから私の質問は、どうすればこれを機能させることができますか? 問題がどこにあるかを判断するためのテストに関するアイデア、または設定する必要がある環境変数は高く評価されています。

私を解決策に導く答えはすべて受け入れられます。

ありがとう。

4

1 に答える 1

1

ssh/config で ssh 接続を変更し、特定の pid で ssh-agent を実行し、環境変数を追加し、実行中のビルドで ssh エージェントにキーを追加するビルド ステップを追加することで、これを修正しました。

http://petey5king.github.com/2011/12/09/deploying-with-capistrano-from-teamcity.html

于 2011-12-10T18:16:14.343 に答える