在 Jenkins 中,在通过 Cygwin sshd 连接的 Windows 遥控器上,如何运行 sh 管道步骤



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

Jenkins的master使用Cygwin sshd连接到我们的Windows遥控器 - 名为winremote。如本页所述,节点的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:cygwin64homejenkinsjenkins-slave-dirworkspaceproto-platforms] Running shell script
sh: C:cygwin64homejenkinsjenkins-slave-dirworkspaceproto-platforms@tmpdurable-a739272fscript.sh: command not found

SSH进入Windows遥控器,我能够看到Jenkins实际上在C:cygwin64homejenkinsjenkins-slave-dir中创建了workspace子目录,但它是空的。

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

来自blatinville的PR,在这个问题几个小时后合并,解决了第一个问题。可悲的是,它引入了另一个问题,在票证 JENKINS-41225 中描述,错误如下:

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

有一个建议的 PR 来快速解决此问题。

然后还有最后一个问题,即持久任务插件如何使用"ps"评估任务是否仍然活着,另一个 PR 修复它。

临时解决方案

在应用这些(或等效的)修复程序之前,可以使用以下命令编译与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。

最新更新