【发布时间】:2017-12-26 22:28:35
【问题描述】:
每次我的 Git 存储库更新时,我都可以在 GCR 上设置构建触发器来构建我的 Docker 映像。但是,我有一个包含多个文件夹的存储库,每个文件夹中都有一个 Docker 文件。
例如:
-
我的应用程序
-- 服务1
Dockerfile-1-- 服务2
Dockerfile-2
如何仅在 service-1 文件夹更新时构建 Dockerfile-1?
【问题讨论】:
每次我的 Git 存储库更新时,我都可以在 GCR 上设置构建触发器来构建我的 Docker 映像。但是,我有一个包含多个文件夹的存储库,每个文件夹中都有一个 Docker 文件。
例如:
我的应用程序
-- 服务1
Dockerfile-1
-- 服务2
Dockerfile-2
如何仅在 service-1 文件夹更新时构建 Dockerfile-1?
【问题讨论】:
这是GitHub feature request 的变体——在您的情况下,基于更改的文件(文件夹)而不是分支的不同行为。
我们正在考虑将此功能作为开发对更高级工作流控制的支持的一部分,并将在该 GitHub 问题可用时回复。
今天可供您使用的解决方法是使用 bash 脚本,该脚本根据对触发构建的 $COMMIT_SHA 中更改的文件的检查,有条件地构建(或不构建)。请注意,git builder 可用于获取通过git diff-tree --no-commit-id --name-only -r $COMMIT_SHA 更改的文件列表。
【讨论】: