Пользовательские проверки GitHub - PullRequest
0 голосов
/ 29 октября 2019

Я хотел бы интегрировать пользовательские проверки в некоторые репозитории, но я не могу найти лучший способ сделать это.

У нас довольно большая команда разработчиков, и мы ввели некоторые соглашения об именахсохранить последовательность в нашем репо. Например, каждое описание фиксации должно содержать X, а каждое имя ветви должно содержать Y или Z или совпадать с каким-либо регулярным выражением.

Как принудить некоторые пользовательские проверки по запросу извлечения, что проверяемая ветвь соответствует этим указанным правилам? Проще говоря, когда у выдвинутых коммитов нет ссылки Jira в их описании - действие слияния блокируется. Мы также хотим видеть эти проверки в PR, как те проверки CI, которые могут пройти или потерпеть неудачу.

Я читал о github-приложениях, действиях, API, marketplace и т. Д. Не могу найти что-то простое и понятное.

Какое приложение или подход следует использовать для такой задачи?

1 Ответ

0 голосов
/ 29 октября 2019

Самый простой способ сделать это с помощью GitHub Action, который позволит вам выполнить любой код, который вы хотите реализовать для CI или проверки linting.

Вы можете создать сценарий оболочки в своем хранилище (например,, script/lint), которая принимает два аргумента: базовая ветвь и проверяемая ветвь. Lint и проверьте все, что вы хотите, печатая полезные сообщения об ошибках и выходя из нуля, если коммиты приемлемы и ненулевые, если они неприемлемы.

Затем создайте рабочий процесс в .github/workflow/lint.yml с чем-то вроде этого (изменение имени скриптаесли необходимо):

name: lint
on: pull_request

jobs:
  lint:
    name: Lint
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@master
    - run: script/lint "$GITHUB_SHA" "$GITHUB_REF"

Это появится в интерфейсе проверок, как и другие проверки CI под именем «Lint». Вы можете настроить поле имени для изменения имени.

AnПример сценария lint, который проверяет теги JIRA в сообщениях о фиксации, может выглядеть следующим образом:

#!/bin/sh

RET=0

for i in $(git rev-list "$1".."$2")
do
    printf "Checking $i for JIRA reference..."
    if git log -1 --format="%B" $i | grep -qsE "[A-Z]+-[0-9]+"
    then
        echo "looks ok."
    else
        echo "failed."
        RET=1
    fi
done

exit $RET
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...