Github push webhook implementation
- edit - share
GitHub and Bitbucket provide webhooks support to notify external services when certain events happen with a repository. The most commonly used webhook event is push
.
The following code is a PHP implementation of GitHub webhook that will update a repository clone and execute required deployment code when a new commit was pushed.
After adding this file to your server, you need to make the following changes before adding the webhook to GitHub:
- Sett
SECRET_TOKEN
to a randomly generated token. You can use this command to generate a truly random secure token on Linux:
head /dev/urandom | tr -dc A-Za-z0-9 | head -c 40
- Change
$commands
list to matches your need for every repository. An example of updating both a static website repository and a Django based application repository is provided on the code above as a reference. - Add write access to the process running PHP (FastCGI, mod_php, …) which is mostly either running within the group
www-data
orwww
depending on the Linux distribution running on your server. - If your repository is private, generate an ssh key and add the pubkey as a read-only deployment key to your repository settings. This key should be generated using the same user as the PHP process.
Finally, add a webhook to your repository settings. Make sure to set the content type to application/json
and the secret to the secret token you have already generated.