Как получить список файлов в запросе на вытягивание в действии github

Я пытаюсь настроить действие github, которое будет автоматически запрашивать рецензентов на основе имен файлов, которые находятся в изменении. Например, если diff содержит файл *.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/[email protected]
        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, поэтому я надеялся на другие предложения.


person itadoatL    schedule 02.12.2019    source источник


Ответы (2)


Одним из вариантов может быть использование pull_requests.paths и создайте новый рабочий процесс для каждого из типов файлов, когда открывается запрос на вытягивание, который вы хотите обработать, вместе с людьми, которые может справиться с ними.

Например:

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

jobs:
  add-sql-reviews:
    runs-on: ubuntu-latest
    steps:
      - uses: kentaro-m/[email protected]
        with:
          repo-token: "${{ secrets.GITHUB_TOKEN }}"
          configuration-path: ".github/auto_assign_sql.yml"

Теперь вы создаете этот рабочий процесс для каждой группы шаблонов файлов, которую хотите поддерживать, и настраиваете проверяющих в каждой из задач.

person smac89    schedule 03.12.2019

Фильтр pull_requests.paths один вариант, но я думаю, что у вас будет рабочий процесс для каждого шаблона файла, если вы сделаете это таким образом? Предполагая, что вы собираетесь создать больше таких ...

Вы можете написать собственный шаг в задании, которое использует API файлов запросов на вытягивание, и тогда у вас может быть работа для каждого шаблона? И автоматическое назначение конфигурации для каждого задания?

Если вы просто хотите назначать рецензентов на основе путей, вы можете рассмотреть возможность использования функция CODEOWNERS GitHub вместо настраиваемого рабочего процесса. Или, если вам нужен больший контроль, но вы не хотите писать это самостоятельно, PullApprove позволяет создавать правила назначения и группы, использующие практически любые данные в GitHub API.

person davegaeddert    schedule 12.08.2020