【问题标题】:Jenkins Github SSH pipeline not workingJenkins Github SSH 管道不工作
【发布时间】:2015-11-04 10:43:25
【问题描述】:

我已经构建了一个小型 Helloworld 节点应用程序。这个想法是将代码推送到 Github 服务器,然后将通知(webhook)发送到将构建代码的 Jenkins 服务器。这部分效果很好。然后,我还想在每次 Jenkins 构建成功时通过 SSH 将代码部署到服务器。我无法执行此步骤。

为了能够使用 SSH 部署代码,我编写了一个小型 shell 脚本(请注意,我已安装 SSH 代理插件并正确配置了带有私钥的凭据):

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

ssh username@<IP_OF_MY_SERVER> <<EOF
cd ~/HelloWorld
sudo git pull
sudo npm install --production
sudo forever restartall
exit
EOF

我将以下代码放入“执行 shell”框中(作为构建的一部分)

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

前两行运行良好,构建成功。添加最后一行会给我以下错误消息:

不会分配伪终端,因为标准输入不是终端。 02:33:38 sudo:不存在 tty,也没有指定 askpass 程序

有什么建议吗?

注意:我实际上正在关注this 教程,但它建议选择需要 Github 插件的“推送到 Github 时构建”,因为这是一个企业 Jenkins,我无法添加插件。只有 SSH-agent 所以想用那个

【问题讨论】:

  • 您似乎没有在目标服务器上配置无密码 sudo。 sudo: no tty present and no askpass program specified 是因为 sudo 需要密码,但无法要求您输入密码。您可以手动 ssh 进入机器并尝试执行 sudo 命令来确认吗?
  • 是的,你完全正确。我给用户密码少了 Suso,这解决了它!
  • 好,我已将其添加为答案!

标签: jenkins ssh jenkins-plugins


【解决方案1】:

您似乎没有在目标服务器上配置无密码 sudo。 sudo: no tty present and no askpass program specified 是因为 sudo 需要密码,但无法要求您输入密码。

在这里查看https://serverfault.com/questions/160581/how-to-setup-passwordless-sudo-on-linux,了解如何设置的详细信息。

【讨论】:

    最近更新 更多