为什么 Concourse 在“放置”资源后“获取”资源?
Why does Concourse `get` a resource after `put`ing it?
当我配置以下管道时:
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 注册表后,它随后会获取映像。这可能需要一些时间,并且最终不会真正向构建中添加任何内容。有没有办法禁用它?
每个 put
意味着创建的版本的 get
。这有几个原因:
这样做的主要原因是新创建的资源可以在构建计划的后续步骤中使用。没有 get
就无法在构建执行期间引入 "new" 资源,因为它们都被解析为特定版本以在构建开始时获取。
这样做也有一些附带好处。首先,它会立即预热一名工作人员的缓存。所以它至少不是完全没有价值;以后的工作将不必获取它。它还可以验证 put
确实达到了预期的效果。
在这种特殊情况下,由于这是构建计划的最后一步,主要原因并不适用。但是我们没有费心去优化它,因为在大多数情况下,附带的好处使得次要问题不值得出现 ("why do only SOME put
steps imply a get
?")。
它也 不能 被禁用,因为我们拒绝添加如此多的旋钮,以至于你有一天会想要转动,然后在你真正转动后不得不返回并关闭需要它恢复到默认值。
当我配置以下管道时:
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 注册表后,它随后会获取映像。这可能需要一些时间,并且最终不会真正向构建中添加任何内容。有没有办法禁用它?
每个 put
意味着创建的版本的 get
。这有几个原因:
这样做的主要原因是新创建的资源可以在构建计划的后续步骤中使用。没有 get
就无法在构建执行期间引入 "new" 资源,因为它们都被解析为特定版本以在构建开始时获取。
这样做也有一些附带好处。首先,它会立即预热一名工作人员的缓存。所以它至少不是完全没有价值;以后的工作将不必获取它。它还可以验证 put
确实达到了预期的效果。
在这种特殊情况下,由于这是构建计划的最后一步,主要原因并不适用。但是我们没有费心去优化它,因为在大多数情况下,附带的好处使得次要问题不值得出现 ("why do only SOME put
steps imply a get
?")。
它也 不能 被禁用,因为我们拒绝添加如此多的旋钮,以至于你有一天会想要转动,然后在你真正转动后不得不返回并关闭需要它恢复到默认值。