GitHub自定义检查

时间:2019-10-28 23:58:32

标签: github

我想将自定义检查集成到一些存储库中,但是我不知道执行此操作的最佳方法。

我们有相当大的开发人员团队,并且我们引入了一些命名约定来保持我们存储库中的一致性。例如,每个提交描述应包含X,每个分支名称应包含YZ,或与某个正则表达式匹配。

如何对拉取请求强制执行一些自定义检查,所检查的分支符合这些指定规则? 简而言之,当推送的提交在描述中没有引用Jira时,合并操作将被阻止。我们还希望在PR中查看这些检查,例如那些可以通过或失败的CI检查。< / p>

我已经阅读了有关github应用,动作,api,市场等的信息。找不到简单明了的东西。

我应该使用哪种应用程序或方法来完成这项任务?

1 个答案:

答案 0 :(得分:0)

最简单的方法是使用GitHub Action,它使您可以执行想要实现CI或检查的代码。

您可以在存储库(例如script/lint)中创建一个包含两个参数的shell脚本,即基本分支和要测试的分支。整理并检查所需内容,打印有用的错误消息,如果可以接受,则退出零,如果不可接受,则退出非零。

然后在.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”。您可以自定义名称字段以更改名称。

一个检查提交消息中的JIRA标签的示例lint脚本可能看起来像这样:

#!/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