Jenkins docker-pipeline插件:docker.image.inside永远不会结束

brgchamk  于 2023-08-03  发布在  Jenkins
关注(0)|答案(1)|浏览(125)

我正在尝试使用docker-pipeline插件和以下groovy管道:

pipeline {
    agent any
    stages {
        stage("Some Impressive Stage Name") {
            steps {
                script {
                    docker.image("alpine").inside() {
                        sh "echo 'hello world!'"
                    }
                }
            }
        }
    }
}

字符串
这个简单的管道永远不会结束。我可以确认图像正在被拉取并在不到两秒的时间内运行,但管道只是在hello world步骤上停止。我做错什么了?
我正在运行Jenkins版本2.401.1和docker-pipeline插件版本563.vd5d2e5c4007f

xjreopfe

xjreopfe1#

我找到了一种绕过插件的方法,只使用docker run而不是旧的插件。不好看,但很管用:

pipeline {
    agent any
    stages {
        stage() {
            steps {
                sh '''docker run 'alpine' \
                    sh -c '
                        echo "hello world!"
                    '
                '''
            }
        }
    }
}

字符串
这显然意味着你必须手动注入环境变量、卷、秘密、证书等。但是你可以完全控制它,而不是受一些被遗忘已久的jenkins插件开发人员的摆布。
当然,你可以使用一个单独的dockerfile(甚至是一个docker-compose文件),但我更喜欢我的CI管道脚本在一个脚本中,而不是多个文件中。这是一个解决方案。

相关问题