如何在github动作中的拉取请求中获取文件列表

时间:2019-12-02 16:33:16

标签: github github-actions

我正在尝试建立一个github动作,该动作将根据更改中的文件名自动请求审阅者。例如,如果差异文件包含一个*.sql文件,我想请求特定人员的审查,同样也要请求其他文件扩展名。

这个在市场上的动作是我从https://github.com/marketplace/actions/auto-assign-action开始的。我认为最好的方法是使用条件式,例如:

name: 'DB Review'
on: pull_request

jobs:
  add-reviews:
    runs-on: ubuntu-latest
    steps:
      - uses: kentaro-m/auto-assign-action@v1.0.1
        if: "{{ contains(github.files, '.sql') }}"
        with:
          repo-token: "${{ secrets.GITHUB_TOKEN }}"

不幸的是,似乎这个神奇的差异列表不存在:https://help.github.com/en/actions/automating-your-workflow-with-github-actions/contexts-and-expression-syntax-for-github-actions#github-context,所以我希望有其他建议。

2 个答案:

答案 0 :(得分:2)

一个选择可能是使用pull_requests.paths过滤器,并在要处理的pull request打开时为每种文件类型以及可以处理它们的人员创建一个新的工作流。

例如:

on:
  pull_request:
    types: [opened]
    paths:
    - '**.sql'

jobs:
  add-sql-reviews:
    runs-on: ubuntu-latest
    steps:
      - uses: kentaro-m/auto-assign-action@v1.0.1
        with:
          repo-token: "${{ secrets.GITHUB_TOKEN }}"
          configuration-path: ".github/auto_assign_sql.yml"

现在,您为要支持的每个文件模式组创建此工作流,并配置每个任务中的审阅者。

答案 1 :(得分:1)

pull_requests.paths filter是一个选项,但是如果您这样做,我想您将为每种文件模式带来一个工作流程?假设您将要创建更多这些...

您可以在使用pull request files API的作业中编写一个自定义步骤,然后为每个模式创建一个作业?还有为每个作业自动分配的配置吗?

如果您只是想根据路径分配审阅者,则可以考虑使用GitHub's CODEOWNERS feature而不是自定义工作流程。或者,如果您希望获得更多控制权,但又不想自己编写,PullApprove lets you create assignment rules and groups using almost any data in the GitHub API