Jenkins-管道:如何使用多个Docker容器,每个容器都由一个Docker文件指定?

wvyml7n5  于 2022-11-02  发布在  Jenkins
关注(0)|答案(1)|浏览(162)

我在我的Jenkinsfile(流水线模式)中定义了多个阶段。
我希望在一个Docker容器中运行一个阶段(本地构建),在另一个Docker容器中运行其他一些阶段(交叉构建)。
然而,我还希望Docker容器由相应的Dockerfile指定,而不是仅由图像名称指定,因为我需要在相应的容器中进行一些定制。
Jenkins文档说明这两种情况都是可能的。
但是,它还声明Dockerfile将始终用作Docker容器规范的文件名。
我如何创建两个单独的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'
            }
        }
    }
}
gcxthw6b

gcxthw6b1#

您可以将以下详细信息添加到Dockerfile代理中。因此,您只需使用filenamedir选项即可。

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'
    }
}

相关问题