flashtag / subsplit-service
Flashtag services...
Installs: 25
Dependents: 0
Suggesters: 0
Security: 0
Stars: 38
Watchers: 6
Forks: 0
Open Issues: 0
Type:project
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-11-09 19:28:20 UTC
README
Webhook and Scheduler
Have you ever wanted to split some of your code from your project into components... maybe read-only github repositories like Symfony and Laravel?
Well, I certainly did. It took me a while to find a good way to do it and now I'm going to help you do the same. This subsplit project will help you to automate the process with webhooks and/or scheduled commands.
Webhooks
git push webhook that runs the subtree split command from a github, bitbucket, or gitlab webhook
Scheduled commands
A flashtag:subsplit
command will run the subtree split command and publish to the subtree repositories.
Install
Install with composer:
composer create-project flashtag/subsplit-service --prefer-dist
From the project directory:
cd .git-subsplit; ./install.sh
Setup
Edit the build/flashtag-subsplit.sh file to match your repo, and this package should actually just work almost out-of-the-box for your own repos as well.
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/
Would change to look like:
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/
For webhooks:
Copy the example environment file cp .env.example .env
and change the appropriate properties.
Uncomment the line corresponding to the service you are using to send the webhook in app/Http/routes/php
and comment out any you aren't using.
Currently, the gitlab route is commented out by default because I don't know of any way to validate the request.
// 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
The WEBHOOK_SECRET
is what you will also set the secret
property to in the github webhook setup:
Your github push webhook payload url path is /webhooks/github
so an example webhook url would look something like https://subsplit.whateveryourdomain.com/webhooks/github
BITBUCKET
Your bitbucket push webhook url path is /webhooks/bitbucket
so an example webhook url would look something like https://subsplit.whateveryourdomain.com/webhooks/bitbucket
GITLAB
Your gitlab push webhook url path is /webhooks/gitlab
so an example webhook url would look something like https://subsplit.whateveryourdomain.com/webhooks/gitlab
For the scheduled command:
You can either use the scheduler as lumen intended in the app/Console/Kernel
, by setting up this cron job:
* * * * * php /path/to/project/artisan schedule:run
or schedule the command yourself. For my own project, I've set up this cron job to just execute this every night:
0 0 * * * php /path/to/project/artisan flashtag:subsplit
Powered by
Sometimes re-inventing the wheel is a good idea and sometimes you have great packages like: