flashtag / subsplit-service

Flashtag服务...

v0.3.1 2016-02-19 21:20 UTC

This package is not auto-updated.

Last update: 2024-09-14 18:26:04 UTC


README

version license

Webhook和调度器

你是否想过将一些代码从项目中拆分出来成组件...比如只读的github仓库,例如SymfonyLaravel

我确实有这样的想法。我花了一些时间才找到一个好的方法来做这件事,现在我要帮助你做到同样的。这个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 add webhook

你的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

由以下提供支持

有时重新发明轮子是个好主意,有时你有一些很棒的包,比如