10

ビルド後のアクションとして 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)?

ここで何がうまくいかないのか、誰にも分かりますか?

4

2 に答える 2

-1

残念ながら、deploy.rb実行する前cap deployに、追加した場所にローカルに保存された別のものに置き換えることによってのみ解決しましたset :password, "sshpassword"

于 2013-04-02T17:58:57.383 に答える