Concourse CI中的资源类型:如果Check总是只返回最新版本,该怎么办?

时间:2020-07-28 05:23:43

标签: concourse concourse-git-resource

我当时正在查看git资源,发现感到好奇的是Check正在克隆,而不是轻量级ls-remote。我认为有两个原因:

  1. 可以根据元数据和仓库中哪些文件更改来过滤提交
  2. 因为文档说它应该返回一系列版本,而不仅仅是最新版本

第一个很明显,但我看不出第二个原因。

已在stdin上为其提供了已配置的源版本和当前版本,并且必须按时间顺序将新版本的数组打印到stdout,包括仍然有效的所请求版本。

但是后来它说:

如果您的资源无法确定哪个版本比给定的版本新(例如,如果它是git commit推入),则应返回资源的当前版本(即新的HEAD)。

所以我的问题是,为什么资源不能总是只返回一个版本-最新版本。即如果源已经转移,甚至没有请求的版本? 哪些功能会丢失?

请注意,此问题与Implemented a Resource Type: How does Concourse use the output of the check, in, and out scripts?

有关

1 个答案:

答案 0 :(得分:0)

如果您这样做,资源将显示一组版本,并且您的get步骤不会返回明确请求的文件的版本({{1返回的版本}}传递给check),这将违反资源类型设计,并且坦率地说,这是一种不好的做法(为什么您会返回仅仅因为更新而未要求的内容?如果需要,该怎么办?将资源固定到特定版本?)

为什么in资源执行git而不是clone的原因是,您可以将资源配置为仅在某些文件被更改时识别新版本(或者相反)。 ,如果有一个新的提交但更改的文件位于源配置的ls-remote节中,则ignore_paths不会返回新资源。

最大的问题是,为什么要这么做?易于编程?性能方面的问题?

相关问题