首页 > 解决方案 > 在多个存储库之间共享 github 工作流的最有效方式是什么?

问题描述

我目前正在为我的团队设置一个带有 Github 操作的工作流。但是,我有十几个用于我们不同微服务的存储库,我不想简单地在每个存储库之间笨拙地复制 .github/workflows/ 目录。如果我们需要更改我们的工作流程,我将不得不在每个存储库之间复制所有更改。

我目前正在考虑的解决方案只是将我的工作流目录作为 git 子模块。(编辑:对此进行了测试,当您的工作流目录是子模块时,github 不会将其识别为包含操作)

这个解决方案有替代方案吗?当前是否有管理这些工作流程的“最佳实践”?

标签: continuous-integrationgithub-actions

解决方案


GitHub 最近为组织添加了工作流模板,请参阅“在组织内共享工作流模板

至于替代方案 - 您可以编写自己的操作或 shell 脚本来处理尽可能多的任务。虽然您仍然需要自己处理工作流程,但在极端情况下,它们可以被缩减为结帐和做所有我想要的步骤。Shell 脚本有一个额外的优势,即只要支持所选的 shell,它们就可以在其他 CI 上工作。

最后,您可以创建包含所有工作流和机器人帐户的主存储库,它将自动将工作流中的所有更改推送到其他存储库,但这基本上是您已经在做的自动化。

我已经看到(几乎)所有提到的在野外使用的解决方案,有些地方有变化。使用/计划使用其他 CI 选择 shell 脚本的存储库。组织只专注于一个生态系统选择行动(他们自己的或由社区创建的)。支持论坛上的一些人选择了自动推送,因为这在当时最接近拥有模板。不能说太多关于工作流模板的使用 - 功能仅在几周前 [在撰写本文时] 公开,所以这并不是一个真正的惊喜。


推荐阅读