Git Hook
works with GitHub and BitBucket webHooks, (*1)
Installation (using composer)
composer require gevman/git-hook
-
onCommitComment - Commit or diff commented on.
-
onCreate - Branch or tag created.
-
onDelete - Branch or tag deleted.
-
onDeployment - Repository deployed.
-
onDeploymentStatus - Deployment status updated from the API.
-
onFork - Repository forked.
-
onGollum - Wiki page updated.
-
onIssueComment - Issue comment created, edited, or deleted.
-
onIssues - Issue opened, edited, closed, reopened, assigned, unassigned, labeled, unlabeled, milestoned, or demilestoned.
-
onLabel - Label created or deleted.
-
onMember - Collaborator added to a repository.
-
onMilestone - Milestone created, closed, opened, edited, or deleted.
-
onPageBuild - Pages site built.
-
onPrivateToPublic - Repository changes from private to public.
-
onPullRequest - Pull request opened, closed, reopened, edited, assigned, unassigned, labeled, unlabeled, or synchronized.
-
onPullRequestReview - Pull request review submitted.
-
onPullRequestReviewComment - Pull request diff comment created, edited, or deleted.
-
onPush - Git push to a repository.
-
onRelease - Release published in a repository.
-
onStatus - Commit status updated from the API.
-
onTeamAdd - Team added or modified on a repository.
-
onWatch - User stars a repository.
Examples
Example #1
automatically git pull on your server after every push, (*2)
require __DIR__.'/vendor/autoload.php';
$gitHubRepo = new \Gevman\GitHook\GitHub\Repository();
$gitHubRepo->onPush(function() {
exec('cd /path/to/your/project && git pull');
});
Example #2
notify your team in Slack about Pull request, (*3)
(I suggest use gevman/slack-bot ☺), (*4)
require __DIR__.'/vendor/autoload.php';
$gitHubRepo = new \Gevman\GitHook\GitHub\Repository();
$slackBot = new \Gevman\SlackBot\IncomingBot('YOUR_SLACK_HOOK_URL');
$gitHubRepo->onPullRequest(function($payload) use ($slackBot) {
$message = sprintf(
'%s just %s pull request: `%s`',
$payload['pull_request']['user']['login'],
$payload['action'],
$payload['pull_request']['title']
);
$slackBot->send($message)
->withIcon('https://assets-cdn.github.com/images/modules/logos_page/GitHub-Mark.png')
->to('general');
});
-
onPush - A user pushes 1 or more commits to a repository.
-
onFork - A user forks a repository.
-
onUpdated - A user updates the Name, Description, Website, or Language fields under the Repository details page of the repository settings.
-
onCommitCommentCreated - A user comments on a commit in a repository.
-
onBuildStatusCreated - A build system, CI tool, or another vendor recognizes that a user recently pushed a commit and updates the commit with its status.
-
onBuildStatusUpdated - A build system, CI tool, or another vendor recognizes that a commit has a new status and updates the commit with its status.
-
onIssueCreated - A user creates an issue for a repository.
-
onIssueUpdated - A user updated an issue for a repository.
-
onIssueCommentCreated - A user comments on an issue associated with a repository.
-
onPullRequestCreated - A user creates a pull request for a repository.
-
onPullRequestUpdated - A user updates a pull request for a repository.
-
onPullRequestApproved - A user approves a pull request for a repository.
-
onPullRequestApprovalRemoved - A user removes an approval from a pull request for a repository.
-
onPullRequestMerged - A user merges a pull request for a repository.
-
onPullRequestDeclined - A user declines a pull request for a repository.
-
onPullRequestCommentCreated - A user comments on a pull request.
-
onPullRequestCommentUpdated - A user updates a comment on a pull request.
-
onPullRequestCommentDeleted - A user deletes a comment on a pull request.
Examples
Example #1
automatically git pull on your server after every push, (*5)
require __DIR__.'/vendor/autoload.php';
$bitBucketRepo = new \Gevman\GitHook\BitBucket\Repository();
$bitBucketRepo->onPush(function() {
exec('cd /path/to/your/project && git pull');
});
Example #2
notify your team in Slack about Pull request, (*6)
(I suggest use gevman/slack-bot ☺), (*7)
require __DIR__.'/vendor/autoload.php';
$bitBucketRepo = new \Gevman\GitHook\BitBucket\Repository();
$slackBot = new \Gevman\SlackBot\IncomingBot('YOUR_SLACK_HOOK_URL');
$notifier = function($action) use ($slackBot) {
return function($payload) use ($action, $slackBot) {
$message = sprintf(
'%s just %s pull request: `%s`',
$payload['actor']['display_name'],
$action,
$payload['pullrequest']['title']
);
$slackBot->send($message)
->withIcon('https://wac-cdn.atlassian.com/assets/img/icons/logo/bitbucket_rgb_blue.svg')
->to('general');
};
};
$bitBucketRepo->onPullRequestApproved($notifier('Approved'))
->onPullRequestApprovalRemoved($notifier('ApprovalRemoved'))
->onPullRequestCreated($notifier('Created'))
->onPullRequestMerged($notifier('Merged'))
->onPullRequestUpdated($notifier('Updated'));