我有一个构建盒,我用它来进行连续构建以及每晚运行单元测试。我正在使用Jenkins来构建/单元测试脚本,它运行在Windows机器上,因为我们的编译器是基于Windows的。
我们的一个企业解决方案使用带有rabbitmq
的Python代码来交换消息,以便通过故障网络同步特定数据库表。我有单元测试来帮助验证更新是否正确发生。
为了对Python更新进行单元测试,我需要能够停止在我的Linux机器上运行的某些服务,然后在更新python代码后重新启动它们。我在Windows框和Linux框之间设置了密钥交换,这样我就不必在批处理脚本中输入密码了。
当我远程进入Windows框时,我可以成功运行批处理文件,该文件使用依赖于密钥交换的plink
命令和putty
的{{1}}(其中正在后台运行)。例如我使用plink从我的批处理文件中的命令行在Linux机器上执行命令。但是,当我尝试从Jenkins运行批处理文件时,批处理文件无法正常工作,因为在尝试运行pageant
命令时会提示输入SSH密码。
我相信我目前的问题可以用两个问题来概括,我希望能够对其进行验证和纠正:
plink
命令。我可以做些什么来解决上述两个问题?如果有一个很好的替代putty用于Windows和Linux之间的自动密钥交换,我会有兴趣听到它(我宁愿远离Cygwin与OpenSSH,但如果以上可以,可能会走这条路线'得到纠正。)
答案 0 :(得分:1)
我在Windows Jenkins框中使用plink
每天与Linux进行通信,没有任何问题。
就像你理论化的那样,Jenkins在它自己的用户(Windows默认,我认为是SYSTEM
用户)下运行,这与你登录的会话不同,即使你登录为{{1 }}。您的身份验证密钥存储在您的(Administrator
或其他)配置文件目录
您需要做的是使用Administrator
将您的密钥导出为Pageant
文件,然后使用ppk
提供此ppk
文件的路径:
plink
答案 1 :(得分:0)
看起来有一种更简单的方法可以做我想做的事,Jenkin的插件https://wiki.jenkins-ci.org/display/JENKINS/Publish+Over+SSH+Plugin