0

我正在使用 gocd 持续交付工具 + git。我的项目由许多子项目组成。我不想在每次提交时重建所有子项目,因此为每个子项目创建了一个管道。我知道,对于每个管道,比如 project1,我必须选择适当的工作目录并像这样运行:

  1. 获取触发 gocd 构建的 git commit。
  2. 检测该提交中的更改是否包含 project1 文件夹
  3. 如果整个项目的更改也影响了 project1 文件夹,则为 project1 运行自定义构建命令。

我如何从触发当前构建的 gocd 获得提交?是否只是 git 的最新提交?我认为最新提交在许多并发提交的情况下不是安全的选择,这就是为什么我想直接从 gocd 获取它 - 我希望它为每个构建触发事件存储它。如何检测提交对 bash 中的文件夹的影响?

4

3 回答 3

2

正如您所说,您为每个子项目使用不同的管道。

为了快速破解,您可以在添加材料时使用“黑名单”字段。它基本上说的是管道,而不是在提交中更改这些文件(在黑名单字段中输入)时触发(开始构建)。

我知道,这有点棘手,但是如果您不经常更改子项目文件夹,这可以解决您的问题。

希望这可以帮助 :)

于 2016-04-29T15:05:00.267 回答
0

如何检测提交对 bash 中的文件夹的影响?

您可以使用git diff --name-only.

git diff --name-only <commit1> <commit2>

将列出在两次提交之间创建/修改/删除的文件。

git diff --name-only <commit1> <commit2> -- directory/path/

将列出里面的修改directory/path/

于 2016-02-26T07:49:06.147 回答
0

此处给出的部分答案(每个提交都写入某个环境变量)https://github.com/gocd/gocd/issues/2001

于 2016-04-05T06:47:52.687 回答