我想将自定义检查集成到一些存储库中,但是我不知道执行此操作的最佳方法。
我们有相当大的开发人员团队,并且我们引入了一些命名约定来保持我们存储库中的一致性。例如,每个提交描述应包含X
,每个分支名称应包含Y
或Z
,或与某个正则表达式匹配。
如何对拉取请求强制执行一些自定义检查,所检查的分支符合这些指定规则? 简而言之,当推送的提交在描述中没有引用Jira时,合并操作将被阻止。我们还希望在PR中查看这些检查,例如那些可以通过或失败的CI检查。< / p>
我已经阅读了有关github应用,动作,api,市场等的信息。找不到简单明了的东西。
我应该使用哪种应用程序或方法来完成这项任务?
答案 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