Jenkins在Windows上使用Docker - 无法运行程序"nohup"

Cap*_*pet 10 windows azure jenkins docker

我正在使用带有Linux Master 的Jenkins Azure VM代理插件来在Windows代理上启动作业.

我已经完成了所有配置步骤,一切正常,直到我尝试在代理上使用Docker.

我的管道脚本:

pipeline {
    agent {
        docker {
            image 'myurl.io/myimage:latest'
            registryUrl 'https://myurl.io/'
            registryCredentialsId '123456789abcdefg'
        }
    }
Run Code Online (Sandbox Code Playgroud)

管道在运行此命令时似乎失败:

docker pull myurl.io/myimage:latest
Run Code Online (Sandbox Code Playgroud)

报告的错误归结为:

Caused: java.io.IOException: Cannot run program "nohup" (in directory "C:\Jenkins\workspace\Test Pipeline Docker"): CreateProcess error=2, The system cannot find the file specified
Run Code Online (Sandbox Code Playgroud)

一些说明:

  • 我勾选了在图片上安装git的方框: 在此输入图像描述

  • Git工具似乎已成功安装在代理VM上

  • 这个问题似乎有关,但不完全相同

    • 我没有sh直接运行命令,它是由插件运行的.
    • 我不认为我有权PATH在此阶段设置
  • 关于JIRA https://issues.jenkins-ci.org/browse/JENKINS-36776的这个问题是相关的,但它似乎没有修复,建议的解决方法似乎不适用于我的情况

我的问题

有没有办法让我的管道脚本工作?也许有一些额外的命令,我可以在代理启动后以某种方式在代理上执行 - 但在docker pull命令之前- 将所需的目录添加到PATH

或者还有其他一些解决方法吗?

the*_*off 1

我认为您已经发现的问题是正确的: Jenkins pipeline sh failed with "cannot run program nohup" on windows

但是,根据 docker-pipeline 插件的 wiki 页面,不支持在 Windows Worker 上运行 docker(虽然有点隐藏......):

对于具有 macOS、Windows 或其他代理且无法运行 Docker 守护进程的 Jenkins 环境,此默认设置可能会出现问题。[https://www.jenkins.io/doc/book/pipeline/docker/#specifying-a-docker-label]

据我所知,有几次尝试添加该功能,但似乎还没有添加: https: //github.com/jenkinsci/docker-workflow-plugin/pull/148

在最后一个链接中还指出,修复 sh/nohup 问题并不是您唯一的问题,例如 docker 插件将尝试运行id以获取用户。

不过,您可以尝试通过编辑管道声明中的路径来使 Linux 命令可用: /sf/answers/3157085011/

编辑:刚刚看到这个问题已经有3年历史了......好吧。但由于到目前为止还没有答案,而且很多人似乎仍然到达这里,所以它仍然可能对某人有所帮助。