2015-11-04 105 views
0

我已经构建了一个小型Helloworld节点应用程序。这个想法是将代码推送到一个Github服务器,然后它将一个通知(webhook)发送到一个将构建代码的Jenkins服务器。这部分工作良好。然后,我也希望Jenkins每次构建成功时都要通过SSH将代码部署到服务器上。我无法让这一步工作。Jenkins Github SSH管道不工作

为了能够部署使用SSH的代码,我写了一个小的shell脚本(注意我有插件安装了SSH代理和私有密钥正确配置的证书):

#---Contents of /script/deploy-dev.sh--- 

ssh [email protected]<IP_OF_MY_SERVER> <<EOF 
cd ~/HelloWorld 
sudo git pull 
sudo npm install --production 
sudo forever restartall 
exit 
EOF 

我把“Execute shell”框中的以下代码(作为构建的一部分)

npm install 
./script/test 
./script/deploy-dev.sh 

前两行很好地工作,并导致成功构建。添加最后一行给我以下错误消息:

伪终端将不会被分配,因为stdin不是终端。 02:33:38 sudo:没有tty礼物,也没有指定askpass计划

任何建议?

注:我实际上遵循this教程,但它建议选择'构建时推送到Github'需要Github插件,因为这是一个企业Jenkins我不能添加插件。只有使用SSH代理才能使用该服务器

+0

看起来您没有在目标服务器上配置无密码sudo。 'sudo:没有tty present,也没有指定askpass程序'是因为sudo需要密码,但是没有办法要求你提供密码。你可以手动ssh进入机器并尝试执行sudo命令来确认吗? – IBam

+0

是的,你完全正确。我给用户密码较少苏索和这个固定它! – wiwa1978

+0

好,我已经添加了这个答案! – IBam

回答