69 lines
1.7 KiB
Markdown
69 lines
1.7 KiB
Markdown
Automatically building commits pushed to Git
|
|
============================================
|
|
|
|
Requirements
|
|
------------
|
|
|
|
- A git repository on a server (bare or plain does not matter)
|
|
- [curl](http://curl.haxx.se) to send the web hook
|
|
|
|
Installation
|
|
------------
|
|
|
|
1. Create a new file `post-receive` inside the
|
|
[git `hooks` directory](http://www.git-scm.com/book/en/Customizing-Git-Git-Hooks) with the following content:
|
|
|
|
```shell
|
|
#!/bin/sh
|
|
|
|
PROJECT_ID=1
|
|
|
|
# You can use the project title instead of the id:
|
|
# PROJECT_ID=my_project_title
|
|
|
|
# If the names of the repository and the project match:
|
|
# PROJECT_ID=`basename \`pwd\` | sed 's#\.git$##'`
|
|
|
|
APP_URL="http://my.server.com/php-censor/"
|
|
|
|
trigger_hook() {
|
|
NEWREV="$2"
|
|
REFNAME="$3"
|
|
|
|
if [ "$NEWREV" = "0000000000000000000000000000000000000000" ]; then
|
|
# Ignore deletion
|
|
return
|
|
fi
|
|
|
|
case "$REFNAME" in
|
|
# Triggers only on branches and tags
|
|
refs/heads/*|refs/tags/*) ;;
|
|
# Bail out on other references
|
|
*) return ;;
|
|
esac
|
|
|
|
BRANCH=$(git rev-parse --symbolic --abbrev-ref "$REFNAME")
|
|
COMMITTER=$(git log -1 "$NEWREV" --pretty=format:%ce)
|
|
MESSAGE=$(git log -1 "$NEWREV" --pretty=format:%s)
|
|
|
|
echo "Sending webhook"
|
|
curl \
|
|
--data-urlencode branch="$BRANCH" \
|
|
--data-urlencode commit="$NEWREV" \
|
|
--data-urlencode committer="$COMMITTER" \
|
|
--data-urlencode message="$MESSAGE" \
|
|
"$APP_URL/webhook/git/$PROJECT_ID"
|
|
}
|
|
|
|
if [ -n "$1" -a -n "$2" -a -n "$3" ]; then
|
|
PAGER= trigger_hook $1 $2 $3
|
|
else
|
|
while read oldrev newrev refname; do
|
|
trigger_hook $oldrev $newrev $refname
|
|
done
|
|
fi
|
|
```
|
|
|
|
2. Change the file to be executable: `chmod a+x post-receive`
|
|
3. Push changes to the repository
|