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工具似乎已成功安装在代理VM上
这个问题似乎有关,但不完全相同
sh直接运行命令,它是由插件运行的.PATH在此阶段设置我的问题
有没有办法让我的管道脚本工作?也许有一些额外的命令,我可以在代理启动后以某种方式在代理上执行 - 但在docker pull命令之前- 将所需的目录添加到PATH?
或者还有其他一些解决方法吗?
我认为您已经发现的问题是正确的: 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年历史了......好吧。但由于到目前为止还没有答案,而且很多人似乎仍然到达这里,所以它仍然可能对某人有所帮助。
| 归档时间: |
|
| 查看次数: |
1500 次 |
| 最近记录: |