为什么Concourse在"put"之后"获得"资源?

Ale*_*aci 10 concourse

当我配置以下管道时:

resources:
- name: my-image-src
  type: git
  source:
    uri: https://github.com/concourse/static-golang
- name: my-image
  type: docker-image
  source:
    repository: concourse/static-golang
    username: {{username}}
    password: {{password}}

jobs:
- name: "my-job"
  plan:
  - get: my-image-src
  - put: my-image
Run Code Online (Sandbox Code Playgroud)

构建并将图像推送到Docker注册表后,它随后会提取图像.这可能需要一些时间,最终并没有真​​正为构建添加任何内容.有没有办法禁用它?

Ale*_*aci 13

每个都put意味着get创建的版本.这有几个原因:

这样做的主要原因是,新构建的资源可以由构建计划中的后续步骤使用.没有get在构建执行期间没有办法引入"新"资源,因为它们都被解析为特定版本,以便在构建开始时获取.

这样做也有一些副作用.首先,它会立即加热一名工人的缓存.所以它至少不是完全没有价值的; 以后的工作不一定要取得它.它还可以作为验证,put实际上具有所需的效果.

在这种特殊情况下,由于这是构建计划的最后一步,因此主要原因并不适用.但是我们并没有费心去优化它,因为在大多数情况下,附带的好处使得值得不出现次要问题("为什么只有一些put步骤意味着get?").

它也无法被禁用,因为我们拒绝添加你想要转动一天的那么多旋钮然后必须返回并在你确实需要它回到默认值时关闭.

文档:https://concourse-ci.org/put-step.html