使用最新上游图像的docker内部Jenkins管道

使用最新上游图像的docker内部Jenkins管道,docker,jenkins,Docker,Jenkins,我们有一个Jenkins文件,其中包含一个声明性管道,使用Docker容器在构建节点上运行 pipeline { agent { docker { registryCredentialsId 'foobar-registry' registryUrl 'https://foobar.com/' image 'bar:latest'

我们有一个Jenkins文件,其中包含一个声明性管道,使用Docker容器在构建节点上运行

pipeline {
    agent {
        docker {
            registryCredentialsId   'foobar-registry'
            registryUrl             'https://foobar.com/'
            image                   'bar:latest'
            label                   'foobar && docker'
            reuseNode               false
            args                    ''
        }
    }
    stages {
        stage('Steps run inside docker here ...') {
            steps {
                sh "python3 -m pycodestyle ."
            }
        }
    }
}
这是可行的,但构建节点docker实例正在缓存
栏:latest
图像,并且在存在更新时不会从上游注册表中提取最新的图像。如果我们更新存储库中的Docker映像,我们必须手动关闭构建节点Docker缓存,这是一个难题

我们可以手动将版本添加到Jenkins文件中引用的映像构建中,并在每次修改Docker映像时更新版本,但对于我们的开发分支,我们非常希望此管道仅在存储库中提取最新映像(如果未检测到任何更改,则最好使用缓存)


这不是一个不寻常的需求,但很难找到docker插件的文档(特别是声明性作业),因此任何帮助都值得感谢。

在翻找源代码后,修复程序是:

pipeline {
    agent {
        docker {
            ...
            alwaysPull   true
            ...
        }
    }
}
这将使用本地docker缓存,并且仅在事情发生更改时才提取新图像