实现资源类型:Concourse 如何使用签入、签出脚本的输出?

Implemented a Resource Type: How does Concourse use the output of the check, in, and out scripts?

阅读有关 Implementing a Resource Type 的 Concourse 文档,关于签入、签入和签出脚本必须发出的内容,不清楚 为什么 需要此输出或 如何 Concourse 使用它。我的问题是:

1) Concourse如何使用check脚本、in脚本、out脚本的输出?
2) 而且,为什么要求 in 和 out 脚本发出版本?如果你不这样做会怎样?

对于上下文,这里是文档的相关部分:

1) 对于 check 脚本:

...[it] must print the array of new versions, in chronological order, to stdout, including the requested version if it's still valid.

例如:

[
  { "ref": "61cbef" },
  { "ref": "d74e01" },
  { "ref": "7154fe" }
]

2) 对于 in 脚本:

The script must emit the fetched version, and may emit metadata as a list of key-value pairs. This data is intended for public consumption and will make it upstream, intended to be shown on the build's page.

例如:

{
  "version": { "ref": "61cebf" },
  "metadata": [
    { "name": "commit", "value": "61cebf" },
    { "name": "author", "value": "Hulk Hogan" }
  ]
}

3) 类似于in脚本,out脚本:

The script must emit the resulting version of the resource. For example, the git resource emits the sha of the commit that it just pushed.

例如:

{
  "version": { "ref": "61cebf" },
  "metadata": [
    { "name": "commit", "value": "61cebf" },
    { "name": "author", "value": "Mick Foley" }
  ]
}

Concourse 使用 check 结果来验证是否有可用的新资源。根据您的管道定义,新资源的存在将触发作业。因此,in 用于使用管道提供的参数读取特定资源,而 out 负责写入它们。

由于您的 in 将使用 check 提供的信息,您可能希望使用类似的结构,但您没有义务这样做。在您的 check/in/out 中回显相同的版本信息非常有用,以便能够记录它并了解管道中的每个资源属于哪个版本。