flashtag / subsplit-service
Flashtag服务...
Requires
- php: >=5.5.9
- laravel/lumen-framework: 5.1.*
- pda/pheanstalk: ~3.0
- vlucas/phpdotenv: ~1.0
Requires (Dev)
- fzaninotto/faker: ~1.0
- phpunit/phpunit: ~4.0
This package is not auto-updated.
Last update: 2024-09-14 18:26:04 UTC
README
Webhook和调度器
你是否想过将一些代码从项目中拆分出来成组件...比如只读的github仓库,例如Symfony和Laravel?
我确实有这样的想法。我花了一些时间才找到一个好的方法来做这件事,现在我要帮助你做到同样的。这个subsplit项目将帮助你通过webhook和/或计划命令来自动化这个过程。
Webhook
git push webhook,从一个github、bitbucket或gitlab webhook运行子树分割命令
计划命令
flashtag:subsplit
命令将运行子树分割命令并将内容发布到子树仓库。
安装
使用composer安装
composer create-project flashtag/subsplit-service --prefer-dist
从项目目录
cd .git-subsplit; ./install.sh
设置
编辑build/flashtag-subsplit.sh文件以匹配你的仓库,这个包应该可以为你自己的仓库几乎即插即用。
git subsplit init git@github.com:flashtag/flashtag.git git subsplit publish --heads="master" app/Admin:git@github.com:flashtag/admin.git git subsplit publish --heads="master" app/Api:git@github.com:flashtag/api.git git subsplit publish --heads="master" app/Client:git@github.com:flashtag/client.git git subsplit publish --heads="master" app/Cms:git@github.com:flashtag/cms.git git subsplit publish --heads="master" app/Data:git@github.com:flashtag/data.git rm -rf .subsplit/
它会变成这样的
git subsplit init git@github.com:Foobar/Parent.git git subsplit publish --heads="master" src/One:git@github.com:Foobar/one.git git subsplit publish --heads="master" src/Two:git@github.com:Foobar/two.git git subsplit publish --heads="master" src/Three:git@github.com:Foobar/three.git # . . . # etc. # . . . rm -rf .subsplit/
对于Webhook
复制示例环境文件cp .env.example .env
并更改适当的属性。
在app/Http/routes.php
中取消注释对应于你要发送webhook的服务行,并注释掉任何不使用的行。
默认情况下,gitlab路由被注释掉,因为我不知道如何验证请求。
// Github $app->post('github', [ 'middleware' => 'github', 'uses' => 'App\Http\Controllers\WebhooksController@push', ]); // Bitbucket $app->post('bitbucket', [ 'middleware' => 'bitbucket', 'uses' => 'App\Http\Controllers\WebhooksController@push', ]); // // Gitlab // $app->post('gitlab', [ // 'middleware' => 'gitlab', // 'uses' => 'App\Http\Controllers\WebhooksController@push', // ]);
GITHUB
WEBHOOK_SECRET
是你还需要在github webhook设置中设置secret
属性的值
你的github push webhook的payload url路径是/webhooks/github
,所以一个示例webhook url可能看起来像这样https://subsplit.whateveryourdomain.com/webhooks/github
BITBUCKET
你的bitbucket push webhook的url路径是/webhooks/bitbucket
,所以一个示例webhook url可能看起来像这样https://subsplit.whateveryourdomain.com/webhooks/bitbucket
GITLAB
你的gitlab push webhook的url路径是/webhooks/gitlab
,所以一个示例webhook url可能看起来像这样https://subsplit.whateveryourdomain.com/webhooks/gitlab
对于计划命令
你可以使用app/Console/Kernel
中lumen期望的调度器,通过设置这个cron job
* * * * * php /path/to/project/artisan schedule:run
或者自己安排命令。对于我的项目,我已经设置了这个cron job每天晚上执行这个命令
0 0 * * * php /path/to/project/artisan flashtag:subsplit
由以下提供支持
有时重新发明轮子是个好主意,有时你有一些很棒的包,比如