我在我的Jenkinsfile (流水线模式)中定义了多个阶段。
我希望在一个Docker容器中运行一个阶段(本地构建),在另一个Docker容器中运行其他一些阶段(交叉构建)。
但是,我也希望由相应的Dockerfile来指定码头容器,而不是仅仅通过图像名称来指定,因为我需要在各自的容器中进行一些定制。
Jenkins文档指出这两件事都是可能的。
但是,它还指出,即Dockerfile将始终用作码头容器规范的文件名。
我如何创建两个独立的Dockerfile,并告诉Jenkins将其中一个用于一个阶段,另一个用于其他阶段?
根据我的理解,Jenkinsfile应该是这样的:
pipeline {
agent None
stages {
stage('Local Build') {
agent { dockerfile true }
steps {
sh 'mvn --version'
}
}
stage('Cross-build') {
agent { dockerfile true } // <--- How do I specify *which*
// Dockerfile to use here?
steps {
sh 'node --version'
}
}
}
}发布于 2022-09-21 11:44:32
您可以向Dockerfile代理添加以下详细信息。因此,您可以简单地使用filename和dir选项。
agent {
// Equivalent to "docker build -f Dockerfile.build --build-arg version=1.0.2 ./build/
dockerfile {
filename 'Dockerfile.build'
dir 'build'
label 'my-defined-label'
additionalBuildArgs '--build-arg version=1.0.2'
args '-v /tmp:/tmp'
}
}https://stackoverflow.com/questions/73799893
复制相似问题