跨多个存储库共享 github 工作流程的最有效方式是什么?

What is the most efficient way of sharing github workflows across several repositories?

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

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

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

GitHub 最近为组织添加了工作流模板,请参阅“Sharing workflow templates within your organization

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

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

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