小编Phi*_*ung的帖子

将 dockerfile 与 Jenkins 脚本化管道语法结合使用

使用Jenkins Declarative Pipeline,可以轻松指定 Dockerfile、代理标签、构建参数和运行参数,如下所示:

Jenkinsfile(声明式管道)

agent {
    dockerfile {
        dir './path/to/dockerfile'
        label 'my-label'
        additionalBuildArgs  '--build-arg version=1.0'
        args '-v /tmp:/tmp'
    }
}
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用脚本化管道语法来实现相同的目标。我找到了一种传递代理标签并运行 args 的方法,但无法传递目录构建 args。理想情况下,我会写这样的东西(标签和运行参数已经工作):

Jenkinsfile(脚本化管道)

node ("my-label"){
    docker.dockerfile(
        dir: './path/to/dockerfile',
        additionalBuildArgs:'--build-arg version=1.0'
    ).inside('-v /tmp:/tmp') {
        \\ add stages here
    }
}
Run Code Online (Sandbox Code Playgroud)

文档展示了如何使用现有的 docker 映像(即使用image管道中的指令)来完成此操作。

Jenkinsfile(声明式管道)

pipeline {
    agent {
        docker { image 'node:7-alpine' }
    }
    stage('Test') {
        //...
    }
}
Run Code Online (Sandbox Code Playgroud)

Jenkinsfile(脚本化管道)

node {
    docker.image('node:7-alpine').inside {
        stage('Test') {
            //...
        } …
Run Code Online (Sandbox Code Playgroud)

jenkins docker dockerfile jenkins-groovy jenkins-pipeline

8
推荐指数
1
解决办法
2万
查看次数