微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Jenkins 管道 - Jenkinsfile 如何触发 docker

如何解决Jenkins 管道 - Jenkinsfile 如何触发 docker

我有一个应用程序,它构建在使用 Jenkins Pipeline 的构建服务器上。我知道该应用程序是在 docker 容器中构建的。 Jenkinsfile 部分中的 stage('Build') 包含以下行:

agent { label 'someDockerImageName' }

我如何检查引擎盖下发生了什么,即使用了哪些 docker 命令?我想可以使用 docker pulldocker run。我没有在 Jenkins 上找到任何相关信息(控制台输出、管道步骤)。

解决方法

看来您的 agent syntax 是错误的。通常,为了在声明性管道中使用 docker 代理,您的语法应如下所示:

agent {
    docker {
        image 'ubuntu'
    }
}

一旦您的管道使用了 docker 代理,您应该会在控制台日志中看到 docker 命令。例如,这是一个简单的管道及其日志输出:

管道

pipeline {
    agent {
        docker {
            image 'ubuntu'
        }
    }
    stages {
        stage('foo') {
            steps {
                sh 'echo bar'
            }
        }
    }
}

日志

Started by user Kthompso
Resume disabled by user,switching to high-performance,low-durability mode.
[Pipeline] Start of Pipeline
[Pipeline] node
Running on jenkinsagent in /var/lib/jenkins/workspace/sample_docker_project
[Pipeline] {
[Pipeline] isUnix
[Pipeline] sh
+ docker inspect -f . ubuntu
.
[Pipeline] withDockerContainer
jenkinsagent does not seem to be running inside a container
$ docker run -t -d -u 1001:1001 -w /var/lib/jenkins/workspace/sample_docker_project -v /var/lib/jenkins/workspace/sample_docker_project:/var/lib/jenkins/workspace/sample_docker_project:rw,z -v /var/lib/jenkins/workspace/sample_docker_project@tmp:/var/lib/jenkins/workspace/sample_docker_project@tmp:rw,z -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** ubuntu cat
$ docker top 5f130a2429b6081736a17edf16eef62f4a8fa85cf498f0b338fa8f500ac53d00 -eo pid,comm
[Pipeline] {
[Pipeline] stage
[Pipeline] { (foo)
[Pipeline] sh
+ echo bar
bar
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
$ docker stop --time=1 5f130a2429b6081736a17edf16eef62f4a8fa85cf498f0b338fa8f500ac53d00
$ docker rm -f 5f130a2429b6081736a17edf16eef62f4a8fa85cf498f0b338fa8f500ac53d00
[Pipeline] // withDockerContainer
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
Finished: SUCCESS

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。