GitHub-一个repo的多个工作流文件是好的做法吗



我正在为我的一个java项目使用github存储库,作为CI/CD 的一部分,我要处理以下场景

  1. 推送至any branch,然后编译并运行单元测试
  2. 推送至development branch,然后编译并生成工件。部署到test server
  3. 推送至main branch,然后编译并生成工件。部署到staging server

要处理CI/CD,我可以通过以下几种方式实现:

  1. 创建一个single workflow yml并根据条件断言作业(更多关于GitLab编写CI文件的风格(
  2. 创建multiple workflow yml,并在每个文件中使用条件运行

我的问题是:在多个yml文件中编写工作流是否是一个好选择,因为作业中的操作/步骤几乎相同,并且可以通过env变量处理差异。

考虑到工作流2和3彼此独立,将它们放在自己的工作流文件中以便能够独立维护是有意义的
但是,如果他们在做同样的事情,只是服务器名称不同,则2和3将是一个以变量为参数的工作流文件,以便将生成结果发布到正确的服务器。(所以你的选择1(

2和3都可以依赖于工作流1,工作流1将进行编译和单元测试。实际上,您可以将1分为用于编译的1a和用于测试的1b。

这样,通过workflow_run,可以使2和3(或具有服务器名称参数的唯一工作流文件(依赖于1a(编译(执行,将2和3限制为仅发布(不编译(
此处对此进行了讨论,并与workflow-run-conclusion-dispatch-action一起使用(它允许对工作流运行进行更细粒度的响应(。

最新更新