12

当我配置以下管道时:

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 注册表后,它随后会获取该映像。这可能需要一些时间,并且最终不会真正为构建添加任何内容。有没有办法禁用它?

4

1 回答 1

15

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

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

这样做也有一些副作用。一方面,它会立即加热一个工作人员的缓存。所以它至少不是完全一文不值;以后的工作将不必获取它。它还可以作为验证put实际具有预期效果。

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

也不能被禁用,因为我们拒绝添加如此多的旋钮,以至于您有一天想要转动,然后一旦您确实需要将其恢复为默认值,就必须返回并关闭。

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

于 2016-08-15T23:05:46.560 回答