我正在使用Jenkins Azure VM 代理插件 https://plugins.jenkins.io/azure-vm-agents与 Linux Master 一起在 Windows 代理上启动作业。
我已经完成了所有配置步骤,一切正常,直到我尝试在代理上使用 Docker。
我的管道脚本:
pipeline {
agent {
docker {
image 'myurl.io/myimage:latest'
registryUrl 'https://myurl.io/'
registryCredentialsId '123456789abcdefg'
}
}
运行以下命令时,管道似乎无法启动:
docker pull myurl.io/myimage:latest
报告的错误归结为:
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
一些注意事项:
我的问题
有没有办法让我的管道脚本正常工作?也许我可以在代理启动后但在启动之前以某种方式在代理上执行一些额外的命令docker pull
命令 - 将所需的目录添加到PATH
?
或者还有其他解决方法吗?
我认为您已经找到的问题是正确的:Jenkins pipeline sh 在 Windows 上失败并显示“无法运行程序 nohup” https://stackoverflow.com/questions/45140614/jenkins-pipeline-sh-fail-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 https://github.com/jenkinsci/docker-workflow-plugin/pull/148
在最后一个链接中还指出,修复 sh/nohup 问题并不是您唯一的问题,例如 docker 插件将尝试运行id
来获取用户。
尽管如此,你could尝试通过编辑管道声明中的路径来使 Linux 命令可用:https://stackoverflow.com/a/45101214/12338776 https://stackoverflow.com/a/45101214/12338776
编辑:
刚看到这个问题已经3年了……好吧。但由于到目前为止还没有答案,而且很多人似乎仍然到达这里,所以它仍然可能对某人有所帮助。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)