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

时间:2016-08-15 23:05:47

标签: 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

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

1 个答案:

答案 0 :(得分:12)

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

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

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

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

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

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