44

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

我有一些使用 GitHub Actions 的 repo,它们工作得很好!在我的特定用例中,我在“推送”时自动部署到我的开发环境,并在“发布”时自动部署到生产环境。这是两个独立的工作流程。

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

我尝试创建一个 dev.workflow 和 prod.workflow 文件,但它们似乎没有被 Actions 拾取。似乎需要一个 main.workflow 文件。如果是这种情况,有没有办法将其他工作流文件源到 main.workflow 中?

4

3 回答 3

71

文件夹中可以有多个文件.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:
  ...
于 2019-08-22T13:37:34.120 回答
43

自从提出这个问题以来,GitHub 对工作流程进行了一些更改。它们现在是用 YAML 语法而不是 HCL 编写的,并且它们不是存储在.github/main.workflow文件中,而是存储在.github/workflows目录中。该文档说“您必须将工作流文件”(注意复数)“存储在.github/workflows存储库的目录中”。

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

于 2019-08-19T07:49:12.947 回答
0

是的,您可以在工作流目录下拥有多个 yml 文件,也可以让它们都具有相同的条件,以便它们可以并行运行。但是,不建议这样做。关于 [https://github.community/t/execution-order-for-multiple-workflows-in-one-repo/116780] 的答案

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

于 2021-06-24T14:12:20.323 回答