如何使用Jenkins声明性流水线运行具有特权的Docker容器

3

我一直在尝试在Jenkins Declarative Pipeline中运行一个特权容器,但是我无法在文档中找到语法或任何示例。目前我拥有一个非特权容器:

pipeline {
    agent none
    stages {
        stage("Build") {
            agent {
                docker { image "hello-world" }
            }
        }
    }
}

看起来这是一个常见的用例,我不敢相信还没有人遇到过:(


在https://jenkins.io/doc/book/pipeline/syntax/#agent下,您可以找到相当全面的文档。 - Michael
谢谢,发布问题后我稍后找到了它! - oblio
1个回答

8
请参考下面的示例:
 stage('Update dependencies version') {
        agent {
            docker {
                image 'maven'
                args '--privileged -v $HOME/.m2:/home/jenkins/.m2 -ti -u 496 -e MAVEN_CONFIG=/home/jenkins/.m2 -e MAVEN_OPTS=-Xmx2048m'
            }
        }

        when {
            not {
                branch 'master'
            }
        }

        steps {
            script {
                ....
            }
        }
    }

在顶层操作:
 pipeline {
        agent {
            docker {
                image 'maven'
                args '--privileged -v $HOME/.m2:/home/jenkins/.m2 -ti -u 496 -e MAVEN_CONFIG=/home/jenkins/.m2 -e MAVEN_OPTS=-Xmx2048m'
            }
        }
        stages {
            stage('Build') {
                steps {
                    script {
                        maven.cleanPackage()
                    }
                }
            }
        }
    }

或者在舞台下的脚本中:

        stage('Build') {
        agent {
            label 'jenkins-slave-swat-prod-01'
        }

        steps {
            script {
                docker.image('mysql:latest').withRun('-e "MYSQL_ROOT_PASSWORD=password" -e "MYSQL_DATABASE=scheduler" -p 3306:3306') { c ->
                    docker.image('maven').inside("--privileged -v $HOME/.m2:/home/jenkins/.m2 -ti -u 496 -e MAVEN_CONFIG=/home/jenkins/.m2 -e MAVEN_OPTS=-Xmx2048m --link ${c.id}:localhost") {
                        maven.cleanPackage()
                    }
                }
            }
        }
    }

1
我猜你的意思是我可以在docker块中添加参数“--privileged”选项。这个方法可行,感谢你的建议! - oblio
是的,你说得对。抱歉忘了提到。很高兴它起作用了!如果有帮助,请接受答案。 - Thiru
我已经编辑了您的评论,添加了标志并接受了答案 :) - oblio
你能否编辑你的回答以准确定位这个细节? - Sandburg

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接