Jenkins 总是从声明性管道代理定义中提取 docker 镜像

eba*_*les 4 jenkins docker jenkins-pipeline

我有一个使用agent {any}.

但我想尝试在 docker 镜像上运行测试。根据文档,我可以通过以下方式做到这一点:

pipeline {
     agent {
         docker { image 'centos/python-27-centos7:latest' }
     }
     stages {
        ...
     }
}
Run Code Online (Sandbox Code Playgroud)

问题是我的 Jenkins 实例处于离线状态,使用此配置,它会docker pull在运行项目时尝试映像。

但是,我在 docker 中加载了 centos/python-27 图像(可见docker images并且可以使用docker run -i -t centos/python-27-centos7 /bin/bash

有什么方法可以在 Jenkins 中配置代理,使其不尝试pull从 Docker Hub 获取图像?

Gus*_*Gus 11

Docker 代理有一个alwaysPull标志,您可以设置为falsetrue

agent {
  docker {
    alwaysPull false
    image 'foo/bar'
  }
}
Run Code Online (Sandbox Code Playgroud)

Jenkins 有一个 Pipeline Syntax Generator 可以在这些情况下提供帮助。在左侧的 Job 菜单中,有一个“Pipeline Syntax”图标。

在此处输入图片说明

在那里您可以看到一些设置来帮助您生成管道指令。

在此处输入图片说明