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

Its*_*rma 37 github-actions

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

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

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

我曾尝试创建一个 dev.workflow 和 prod.workflow 文件,但它们似乎没有被 Actions 接收。看来需要一个 main.workflow 文件。如果是这种情况,有没有办法将其他工作流文件导入 main.workflow?

Tia*_*vêa 60

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

按照您的想法,您可以:

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

name: Dev Workflow - Test and check thing
on:
  push:
    branches:
      - dev
jobs:
  ...
Run Code Online (Sandbox Code Playgroud)

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

name: Master Workflow - Build and deploy to production
on:
  pull_request:
    types: closed
    branches:
      - master
jobs:
  ...
Run Code Online (Sandbox Code Playgroud)

  • @ItsKarma 我更新了答案,以便为任何找到良好解释的人提供更好的解释。:) (2认同)
  • 我们如何知道哪个 **yml** 文件首先运行? (2认同)

rmu*_*unn 42

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

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