我有一个 mono repo (git),其中包含我正在处理的多个微服务。在推送时,第 3 方构建服务检测到此推送并开始处理构建和部署。
这很好用。但现在我正在尝试优化这个过程,我只希望它构建我一直在从事的特定服务。这意味着构建服务必须检测哪些文件夹已更改并仅构建这些服务。
我已经让这个过程在 Travis 上运行得很好,因为它有一个 GIT_COMMIT_RANGE 环境变量。所以我可以在我最新的推送中获取所有提交,然后在所有这些提交中获取已更改的文件夹..这真的很好..但仅在 travis 上。
我希望删除 travis 并直接在 GCP 或我正在使用的任何其他 3rd 方容器构建器上构建我的 docker 映像,但我只想构建已更改的文件夹。
我在想有可能用 git commit 钩子来做到这一点。通过这个钩子,我可以开始生成一个文件夹列表来标记构建服务器来构建,甚至开始生成一个构建文件(cloudbuild.yaml)。然后在一些 git push 钩子上,(甚至有一个 post-push 钩子)我在本地重置 cloudbuild.yaml 文件的内容。