我想要Jenkins文件的基本示例:
node {
sh 'docker build -t foo/bar .'
}
似乎我需要将docker安装到执行我的Jenkinsfile的Jenkins从属映像上。有这么简单的方法吗? (Jenkins奴隶图像本身就是一个泊坞容器)
我的假设是否正确?
因为我还需要访问' gcloud'命令(我通过Kubernetes Helm / Charts运行Jenkins),我一直在使用gcr.io/cloud-solutions-images/jenkins-k8s-slave
图像作为我的Jenkins奴隶。
目前它错误地说" docker:not found"
答案 0 :(得分:5)
我的假设是你想在Jenkins奴隶里面docker build
(这是一个Kubernetes吊舱,我假设是由Kubernetes Jenkins Plugin创造的)
要设置舞台,当Kubernetes创建将充当Jenkins从属的pod时,您在节点内执行的所有命令都将在Kubernetes pod内执行,在其中一个容器内(默认情况下只有一个)容器,但稍后会有更多内容。)
所以你实际上是在基于gcr.io/cloud-solutions-images/jenkins-k8s-slave
的容器内运行Docker命令,这很可能基于the official Jenkins JNLP Slave,不是容器Docker! < / p>
从现在开始,您可以采取两种方法:
/var/run/docker.sock
)安装在容器内。
(You can find details on this approach here)。
Here is an image that contains the Docker client and kubectl
。以下是如何配置Jenkins插件的完整视图:
请注意,您使用不同的图像(您可以创建自己的图像并添加所需的任何二进制文件)并将Docker套接字安装在容器中。
正如我所说,JNLP图像将启动您在同一窗格中指定的容器。请注意,为了从容器中使用Docker,您仍然需要安装Docker sock。
我发现这两种方法可以在容器内运行的Jenkins JNLP奴隶中实现构建图像。
该示例还演示了如何使用Jenkins的凭据绑定来推送映像,以及如何在构建过程中更新Kubernetes部署。
更多资源:
谢谢, Radu M