在Jenkins中,在通过Cygwin sshd连接的Windows远程中,如何运行sh管道​​步骤?

时间:2017-01-17 13:39:52

标签: jenkins cygwin jenkins-pipeline

我们正在移植Jenkins管道以在Windows环境中工作。

Jenkins的主人使用Cygwin sshd连接到我们的Windows远程名称winremote。 如this page所述,节点的Remote root directory作为普通的Windows路径给出(在这种情况下,它被设置为 C:\ cygwin64 \ home \ jenkins \ jenkins-slave- DIR

这个最小的管道示例:

    node("winremote")
    {
        echo "Entering Windows remote"
        sh "ls -l"
    }

因错误而失败:

[Pipeline] echo
Entering Windows rmeote
[Pipeline] sh
[C:\cygwin64\home\jenkins\jenkins-slave-dir\workspace\proto-platforms] Running shell script
sh: C:\cygwin64\home\jenkins\jenkins-slave-dir\workspace\proto-platforms@tmp\durable-a739272f\script.sh: command not found

通过SSH连接到Windows远程,我能够看到Jenkins在workspace中实际创建了C:\cygwin64\home\jenkins\jenkins-slave-dir子目录,但它是空的。

是否有一种已知的方法可以在这样的遥控器上使用sh管道步骤?

1 个答案:

答案 0 :(得分:0)

在此问题后几个小时合并的PR from blatinville解决了第一个问题。 遗憾的是,它引入了另一个问题,在故障单JENKINS-41225中描述,错误:

nohup: failed to run command 'sh': No such file or directory

此问题有PR for a quickfix提议。

然后,持久性任务插件如何使用' ps',another PR fixing it评估任务是否仍然存在,这是最后一个问题。

临时解决方案

在应用这些(或等效的)修补程序之前,可以使用以下命令编译Cygwin兼容的持久任务插件:

git clone https://github.com/Adnn/durable-task-plugin.git -b cygwin_fixes
cd durable-task-plugin/
mvn clean install -DskipTests

其中特别生成 target / durable-task.hpi 文件,该文件可用于替换Jenkins在其 durable-task.jpi 文件>插件文件夹。然后需要重新启动Jenkins。