无论我尝试什么,我似乎都无法使用声明式管道在 docker 容器中使用正确的图像构建我的项目。
我已经验证了以下内容:
据我所知,Jenkins 只是使用了基础镜像,而不是正确的镜像,这是由我指定的 dockerfile 产生的。
我尝试过的事情:
让詹金斯弄清楚
pipeline {
agent dockerfile
在顶层使用 docker:
pipeline {
agent {
dockerfile {
filename 'Dockerfile'
reuseNode true
}
}
stages {
stage('configure') {
steps {
每一步都使用docker
pipeline {
agent none
stages {
stage('configure') {
agent {
dockerfile {
filename 'Dockerfile'
reuseNode true
}
}
steps {
缩写,由于例子的数量。在指定区域之外的任何地方都没有提到 Docker,只需移除 Docker 部件并使用常规代理就可以正常工作。
日志没用。他们只是声明他们构建了镜像并验证它们存在,然后无法执行刚刚安装的命令(在这种情况下是介子)。
答案 0 :(得分:2)
首先,我建议你阅读:
agent
declaration 尤其是 dockerfile
部分dockerfile
。从使用 agent { dockerfile true }
的最小管道开始,例如请向我们展示日志。如果没有任何日志或更详细的设置说明,很难为您提供帮助。 我可以肯定地告诉你,第二次尝试是错误的,因为
<块引用>reuseNode
对 docker
和 dockerfile
有效,并且仅在用于单个 agent
的 stage
时有效。
相反,我不确定第三次尝试如何工作:使用 agent none
您强制每个阶段都有一个 agent
部分,但在阶段的 agent
部分中您有reuseNode
选项设置为 true。这不是矛盾吗?如果这个节点不存在,你如何重用一个顶级节点?
我知道这不是答案,但在我看来停留在评论中也太长了。