mecodeninja / githubwebhooks
提供GitHub Webhooks监听器,执行业务逻辑,根据业务逻辑的结果在GitHub中创建状态。
Requires
- php: >=5.0
This package is auto-updated.
Last update: 2024-09-21 03:18:25 UTC
README
Laravel包,监听GitHub webhook事件,并在GitHub中创建状态进行响应
Laravel 5.6
标签1.0+适用于Laravel 5.6
composer require mecodeninja/githubwebhooks:^1.0
安装
使用Composer安装包
composer require mecodeninja/githubwebhooks:^1.0
发布包配置
php artisan vendor:publish --provider="MeCodeNinja\GitHubWebhooks\GitHubWebhooksServiceProvider"
通过编辑%storage%/app/githubwebhooks-config.yaml配置要在您的存储库上执行的检查
nano storage/app/githubwebhooks-config.yaml
将name设置为您的GitHub仓库
repositories: - name: willwright/githubwebhooks token: %mytoken% checks: BranchCheck: branches: [origin/develop] PathCheck: paths: [/^vendor\//]
仓库的name必须与GitHub Webhook发送的负载中的repo.full_name匹配,才能激活检查。
将token设置为GitHub中由您生成的个人访问令牌。请参阅:https://help.github.com/en/articles/creating-a-personal-access-token-for-the-command-line 令牌需要:repo(如果您的存储库是私有的)repo > public_repo(如果您的存储库是公共的)
警告
请不要将
githubwebhooks-config.yaml提交到您的SVN。它包含敏感信息
仓库
可以添加任意数量的仓库项到仓库序列中。
将查询repositories序列以构建一组与PullRequest匹配的仓库。名称必须完全匹配,或者可以使用通配符。
示例:给定PullRequest.repo.full_name = "willwright/githubwebhooks"。
repository.name = "willwright/githubwebhooks" 将匹配
repository.name = "*" 将匹配
repository.name = "notmy/repo" 将不匹配
repositories: - name: willwright/githubwebhooks token: 123456 checks: BranchCheck: branches: [origin/develop] PathCheck: paths: [/^vendor\//] - name: '*' token: 123456 checks: PathCheck: paths: [/^somepath\//] - name: 'notmy/repo' token: 123456 checks: PathCheck: paths: [/^somepath\//]
检查类型
检查是执行实际工作的类。每个must扩展\MeCodeNinja\GitHubWebhooks\Check\CheckAbstract。通过config/githubwebhooks.php将检查提供给工厂使用。
此包包含
\MeCodeNinja\GitHubWebhooks\Check\BranchCheck\MeCodeNinja\GitHubWebhooks\Check\PathCheck
用于仓库配置中的键可以在config/githubwebhooks.php中找到。它们是
- BranchCheck
- PathCheck
BranchCheck
分支请求旨在确保功能分支没有从特定的分支分叉,并且没有将特定的分支合并到其中。
许多团队遵循Git分支策略,其中所有功能分支都必须从master分叉,如果develop要合并,这将破坏分支以合并回master。
分支检查接受一个字符串数组。将检查Pull Request分支,以验证它是否未从相关的分支分叉。将检查Pull Request分支,以确保它没有将相关的分支合并到其中。
请注意,由于Git的提交和分支内部架构,确定一个分支是否合并了另一个分支并非一门精确的科学,此检查可能存在假阳性。
示例
BranchCheck: branches: [origin/develop]
示例将检查Pull Request分支的orign/develop
PathCheck
PathCheck旨在确保功能分支中没有修改特定的路径。
许多现代应用程序都是基于框架或模块集构建的。最佳实践是扩展库以创建独特的功能,而不是修改库本身。
路径检查接受一个正则表达式模式的数组。它将检查拉取请求中更改的文件集合是否存在匹配项。如果找到匹配项,则检查将报告失败。
示例
PathCheck: paths: [/^vendor\//]
示例将检查拉取请求中更改的路径集合是否包含/vendor。如果找到,则检查将报告失败。
扩展
开发者可能有自己的检查想要执行。为了创建一种新的检查类型,开发者应该
- 创建一个新的检查类,该类扩展自
\MeCodeNinja\GitHubWebhooks\Check\CheckAbstract - 实现接口所需的方法
- 在配置文件
config/githubwebhooks.php中的checks数组中注册你的类