我正在使用gocd连续交付工具+ git。我的项目由许多子项目组成。我不想在每次提交时重建所有子项目,因此为每个子项目创建了一个管道。我知道,对于每个管道,例如对于项目1,我必须选择合适的工作目录并像这样运行:
- 获取触发 gocd 构建的 git 提交。
- 检测是否该提交中的更改包含 Project1 文件夹
- 如果更改整个项目也影响了 project1 文件夹运行自定义生成命令对于项目 1。
我如何从触发当前构建的 gocd 获得提交?它是否只是 git 的最新提交?我认为在很多并发提交的情况下,最新的提交是不安全的选择,这就是为什么我想直接从 gocd 获取它 - 我希望它为每个构建触发事件存储它。如何检测提交对 bash 中文件夹的影响?
正如您所说,您正在为每个子项目使用不同的管道。
为了快速破解,您可以在添加材料时使用"黑名单"字段。它基本上说的是管道,而不是在提交中更改这些文件(在黑名单字段中输入)时触发(开始构建)。
我知道,这有点棘手,但是如果您不更频繁地更改子文件夹,这可以解决您的问题。
希望这对:)有所帮助
如何检测提交对 bash 中文件夹的影响?
您可以使用git diff --name-only
.
git diff --name-only <commit1> <commit2>
将列出在两次提交之间创建/修改/删除的文件。
git diff --name-only <commit1> <commit2> -- directory/path/
将在directory/path/
内列出修改
这里给出的部分答案(每个提交都写入某个环境变量) https://github.com/gocd/gocd/issues/2001