mecodeninja/githubwebhooks

提供GitHub Webhooks监听器,执行业务逻辑,根据业务逻辑的结果在GitHub中创建状态。

1.2.1 2021-02-21 23:52 UTC

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。如果找到,则检查将报告失败。

扩展

开发者可能有自己的检查想要执行。为了创建一种新的检查类型,开发者应该

  1. 创建一个新的检查类,该类扩展自\MeCodeNinja\GitHubWebhooks\Check\CheckAbstract
  2. 实现接口所需的方法
  3. 在配置文件config/githubwebhooks.php中的checks数组中注册你的类