触发工作流

已完成

不应该允许任何人将任何更改直接推送到代码存储库中的主分支。 理想情况下,如果需要进行任何开发,则应对分支中的代码副本进行更改。

一种常见方法是使用功能分支,其中一个分支用于处理一种功能。 例如,数据科学团队可能需要改进模型性能,并将尝试通过使用超参数值进行试验以实现此目的。 此团队可以创建分支,更新训练脚本中的超参数值。 完成试验后,数据科学家可以创建一个拉取请求,将分支与主存储库合并。

使用分支和拉取请求,可以在将代码与主分支合并之前验证对代码的任何更改。 拉取请求还可以用作 GitHub Actions 的触发器,以自动执行需要遵循建议的代码更新的任务,例如自动执行代码质量检查。

若要将基于功能的开发与自动化结合使用,需要执行以下操作:

  • 创建分支保护规则以阻止直接推送到主分支。
  • 创建分支以更新代码。
  • 打开拉取请求时触发 GitHub Actions 工作流。

创建分支保护规则

若要保护代码,需要阻止任何直接推送到主分支的操作。 阻止直接推送意味着不允许任何人将任何代码更改直接推送到主分支。 可以通过合并拉取请求来对主分支进行更改。

若要保护主分支,请在 GitHub 中启用“分支保护规则”:

  1. 导航到存储库中的“设置”选项卡。
  2. 在“设置”选项卡的“代码和自动化”下,选择“分支”。
  3. 选择“添加规则”。
  4. 在“分支名称模式”下,输入 main
  5. 启用“在合并前需要拉取请求”和“需要批准”。
  6. 保存所做的更改。

Screenshot of configuring a branch protection rule in GitHub.

创建分支以更新代码。

每当要编辑代码时,都必须创建分支并在其中执行操作。 想要做出最终更改时,可以创建拉取请求以将功能分支与主分支合并。

触发 GitHub Actions 工作流

最后,可能需要使用拉取请求的创建作为 GitHub Actions 工作流的触发器。 例如,每当有人更改代码时,你都需要运行一些代码质量检查。

仅当编辑的代码已通过质量检查,并且有人验证了建议的更改时,实际上才需要合并拉取请求。

若要触发 GitHub Actions 工作流,可以使用 on: [pull_request]。 使用此触发器时,工作流将在每次创建拉取请求时运行。

如果希望工作流在每次合并拉取请求时运行,则需要使用另一个触发器。 合并拉取请求本质上是推送到主分支。 因此,若要在合并拉取请求时触发要运行的工作流,请在 GitHub Actions 工作流中使用以下触发器:

on:
  push:
    branches:
      - main