Capistrano で svn+ssh なリポジトリからデプロイ
2009-04-27


なんかもっと上手い方法がありそうな気がするので、誰かの添削を期待して晒してみます。

Capistrano のバージョンは 2.5.5 基本的な設定の話は省略します。

復習

Capistrano がリポジトリにアクセスするタイミングについて。

cap deploy

このタスクが完了するまでに、Capistrano は 2回リポジトリにアクセスします。 それぞれの経路が違うので、それぞれに対処が必要です。

svn info svn://example.com/svn/reps/application/trunk -rHEAD

問題点

Capistrano の設定ファイルを書く上で問題になるのは、1ヶ所だけだと思います。 svn+ssh に含まれる ssh の接続用ユーザ情報を書く設定項目が無いのです。

set :user, 'username'

で設定できるログインユーザは、ローカルからデプロイ先へのログインにしか使用されません。

Capistorano は svn コマンドを何も考えずに利用するので、結果としてデフォルト値が採用されます。 結果として、

が使用されます。

これらがどちらも、リポジトリのホストへ ssh でアクセスできれば良いのですが、 うちはそうなっていない(後者はお客様指定のアカウント名だったりする)ので、 困ったことになります。

解決方法

シェル環境変数 SVN_SSH を設定する

多分、これが順当なのかなと思っています。

export SVN_SSH='ssh -l username -i /path/to/private_key'

set :repository にユーザ名を埋める

config/deploy.rbに

set :repository, "svn+ssh://username@example.com/svn/reps/application/trunk"

などとしてしまう。

お客様のサーバにできるだけ痕跡を残したくない場合に。

[Rails]

コメント(全0件)
コメントをする


記事を書く
powered by ASAHIネット