如何从 gocd 获取最新提交并检测它是否更改了某些特定文件夹?
How get latest commit from gocd and detect did it change some specific folder?
我正在使用 gocd 持续交付工具 + git。我的项目由许多子项目组成。我不想在每次提交时重建所有子项目,因此为每个子项目创建了一个管道。我知道,对于每个管道,比如项目 1,我必须选择合适的工作目录和 运行 smth 这样的:
- 获取触发 gocd 构建的 git 提交。
- 检测是否
该提交中的更改包含 project1 文件夹
- 如果改变
整个项目也影响了 project1 文件夹 运行 自定义构建命令
对于项目 1.
我如何从触发当前构建的 gocd 获取提交? 是否只是 git 的最新提交?我认为在许多并发提交的情况下最新提交不是安全选项,这就是为什么我想直接从 gocd 获取它——我希望它为每个构建触发事件存储它。 检测提交如何影响 bash 中的文件夹?
How detect commit affects on folder in 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
如您所说,您为每个子项目使用了不同的管道。
为了快速破解,您可以在添加 material 时使用 "Blacklist" 字段。它基本上说管道,not 在提交中更改这些文件(在黑名单字段中输入)时触发(开始构建)。
我知道,这有点棘手,但如果你不经常更改你的子项目文件夹,这可以解决你的问题。
希望对您有所帮助:)
我正在使用 gocd 持续交付工具 + git。我的项目由许多子项目组成。我不想在每次提交时重建所有子项目,因此为每个子项目创建了一个管道。我知道,对于每个管道,比如项目 1,我必须选择合适的工作目录和 运行 smth 这样的:
- 获取触发 gocd 构建的 git 提交。
- 检测是否 该提交中的更改包含 project1 文件夹
- 如果改变 整个项目也影响了 project1 文件夹 运行 自定义构建命令 对于项目 1.
我如何从触发当前构建的 gocd 获取提交? 是否只是 git 的最新提交?我认为在许多并发提交的情况下最新提交不是安全选项,这就是为什么我想直接从 gocd 获取它——我希望它为每个构建触发事件存储它。 检测提交如何影响 bash 中的文件夹?
How detect commit affects on folder in 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
如您所说,您为每个子项目使用了不同的管道。
为了快速破解,您可以在添加 material 时使用 "Blacklist" 字段。它基本上说管道,not 在提交中更改这些文件(在黑名单字段中输入)时触发(开始构建)。
我知道,这有点棘手,但如果你不经常更改你的子项目文件夹,这可以解决你的问题。
希望对您有所帮助:)