ビルド後のアクションとして Capistrano デプロイを実行する Jenkins ビルドがあります。
コンソールから Jenkins ユーザーとして Capistrano タスクを実行すると、パスワード プロンプトが表示されずに完全に正常に動作します (ビルド サーバーとステージング サーバーの両方で以前に SSH キーをセットアップしました)。ただし、Jenkins を介して同じスクリプトを実行すると、突然パスワード プロンプトが表示され、その後ビルドが失敗します (TTY が存在しません)。
[workspace] $ /bin/sh -xe /tmp/hudson7321493219694918714.sh
Performing Post build task...
Match found for : : True
Logical operation result is TRUE
Running script : cap _2.13.4_ deploy
[workspace] $ /bin/sh -xe /tmp/hudson1545664641721322948.sh
+ cap _2.13.4_ deploy
* executing `deploy'
* executing `deploy:update'
** transaction: start
* executing `deploy:update_code'
triggering before callbacks for `deploy:update_code'
[32m--> Updating code base with checkout strategy[0m
executing locally: "git ls-remote git@my.staging-server.com:my_project.git master"
command finished in 1200ms
* executing "git clone -q git@my.staging-server.com:my_project.git /var/www/staging/my_project/releases/20121029223619 && cd /var/www/staging/my_project/releases/20121029223619 && git checkout -q -b deploy 1fb11d669a6cb5a714d077162305dfcfaba82f01 && (echo 1fb11d669a6cb5a714d077162305dfcfaba82f01 > /var/www/staging/my_project/releases/20121029223619/REVISION)"
servers: ["my.staging-server.com"]
Password: stty: standard input: Inappropriate ioctl for device
stty: standard input: Inappropriate ioctl for device
stty: standard input: Inappropriate ioctl for device
*** [deploy:update_code] rolling back
* executing "rm -rf /var/www/staging/my_project/releases/20121029223619; true"
servers: ["my.staging-server.com"]
** [deploy:update_code] exception while rolling back: Capistrano::ConnectionError, connection failed for: my.staging-server.com (Net::SSH::AuthenticationFailed: not-specified)
connection failed for: my.staging-server.com (Net::SSH::AuthenticationFailed: not-specified)
POST BUILD TASK : FAILURE
おそらく、Jenkins を実行しているときに、Ruby が SSH キーを取得しないようです ( Net::SSH::AuthenticationFailed: not-specified
)?
ここで何がうまくいかないのか、誰にも分かりますか?