我可以有多个 GitHub 个 Actions 工作流程文件吗?

Can I have multiple GitHub Actions workflow files?

我可以有多个工作流程文件吗?

我有一些使用 GitHub Actions 的回购,它们工作得很好!在我的特定用例中,我在 "push," 自动部署到我的开发环境,并在 "release." 自动部署到生产环境。这是两个独立的工作流程。

我知道我可以将这两个工作流程放在同一个 main.workflow 文件中,这样就可以正常工作,但我更愿意将它们完全放在单独的工作流程文件中。例如,是否可以有一个 dev.workflow 文件和一个 prod.workflow 文件?

我已经尝试创建 dev.workflow 和 prod.workflow 文件,但它们似乎没有被 Actions 拾取。似乎需要 main.workflow 文件。如果是这样,有没有办法将其他工作流文件导入 main.workflow?

自从提出这个问题后,GitHub 对工作流程进行了一些更改。它们现在是用 YAML 语法而不是 HCL 编写的,并且不是存储在 .github/main.workflow 文件中,而是存储在 .github/workflows 目录中。 documentation 表示 "You must store workflow files"(注意复数形式)"in the .github/workflows directory of your repository."

因此,一旦您将 main.workflow 文件移植到 YAML 语法,您应该能够按照您想要的方式将每个工作流存储在一个文件中。

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

按照您的想法,您可以:

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

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

prod.workflow.yml- 构建和部署您的项目(仅在 master 分支上,当 PR 关闭时)

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

是的,你可以在 workflow 目录下有多个 yml 文件,你也可以让它们都具有相同的条件,这样它们就可以 运行 并行。但是不推荐。 关于[https://github.community/t/execution-order-for-multiple-workflows-in-one-repo/116780]

的回答

Every workflow needs an event trigger defined in the yaml file, if your operation triggers the event, the workflow will be started, they can be in parallel.