我能拥有多个GitHub Actions工作流文件吗?

71

我能否拥有多个工作流文件?

我有几个使用GitHub Actions的仓库,它们运行得很好!在我的特定用例中,我在"push"时自动部署到我的开发环境,并在"release"时自动部署到生产环境。这是两个单独的工作流。

我知道我可以将这两个工作流放在同一个main.workflow文件中,那样也能正常工作,但我更喜欢将它们完全分开放在不同的工作流文件中。例如,我可以有一个dev.workflow文件和一个prod.workflow文件吗?

我尝试过创建dev.workflow和prod.workflow文件,但似乎Actions没有识别到它们。似乎需要一个main.workflow文件。如果是这种情况,是否有一种方法将其他工作流文件引入到main.workflow中?


你的文件是用 yml 写的吗? - IgorGanapolsky
3个回答

94

您可以在.github/workflows文件夹中拥有多个文件。所有文件都将被读取并作为独立的测试运行。每个文件上的“on”参数将告诉它何时必须被调用。

根据您的想法,您可以拥有:

dev.workflow.yml - 可能用于运行某种类型的测试(仅在开发分支上推送时运行)

name: Dev Workflow - Test and check thing
on:
  push:
    branches:
      - dev
jobs:
  ...

prod.workflow.yml- 用于构建和部署您的项目(仅在主分支上,并且当 PR 被关闭时)

name: Master Workflow - Build and deploy to production
on:
  pull_request:
    types: closed
    branches:
      - master
jobs:
  ...

2
@ItsKarma 我更新了答案,更好地解释了对于任何寻找良好解释的人。 :) - Tiago Gouvêa
3
我们如何知道哪个 yml 文件首先运行? - IgorGanapolsky
如果具有相同的条件,它们将同时运行,但不能保证顺序。 - star
@TiagoGouvêa,能否帮忙看看:https://dev59.com/c7v4oIgBc1ULPQZFkXzZ?noredirect=1#comment127692674_72276452 - Asking

50
自这个问题被问出来以后,GitHub 对工作流做了一些改动。它们现在采用 YAML 语法而不是 HCL,并且不再存储在 .github/main.workflow 文件中,而是存储在一个名为 .github/workflows 的目录中。根据文档所述,“你必须把工作流文件”(注意复数形式)“存储在代码库的 .github/workflows 目录中。”
因此,一旦将您的 main.workflow 文件转换为 YAML 语法,您应该能够按照您想要的方式将每个工作流程存储在单个文件中。

你能帮忙吗?https://dev59.com/c7v4oIgBc1ULPQZFkXzZ?noredirect=1#comment127692674_72276452 - Asking

0

是的,您可以在工作流目录下拥有多个yml文件,也可以使它们都具有相同的条件以便并行运行。但这样做并不推荐。

每个工作流都需要在yaml文件中定义一个事件触发器,如果您的操作触发了该事件,那么该工作流就会启动,它们可以并行执行。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接