You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
jenkins-debian-glue/git/post-receive

72 lines
1.8 KiB

#!/bin/sh
# git hook: post-receive
# !!! PLEASE ADJUST !!!
server=http://jenkins.example.org
projectname=ADJUSTME
token=ADJUSTME
trigger_jenkins()
{
oldrev=$(git rev-parse "$1")
newrev=$(git rev-parse "$2")
refname="$3"
if expr "$oldrev" : '0*$' >/dev/null ; then
change_type="create"
else
if expr "$newrev" : '0*$' >/dev/null ; then
change_type="delete"
else
change_type="update"
fi
fi
newrev_type=$(git cat-file -t "$newrev" 2> /dev/null)
case "$change_type" in
create|update)
rev_type="$newrev_type"
;;
delete)
return # we are not interested in deletes
;;
esac
case "$refname","$rev_type" in
refs/heads/*,commit)
# branch
branch_name=${refname##refs/heads/}
;;
esac
echo "Detected branch $branch_name"
# trigger autobuild
if wget --tries=2 --dns-timeout=5 --connect-timeout=5 --read-timeout=5 \
-O /dev/null "${server}/job/${projectname}/buildWithParameters?token=$token&branch=origin/${branch_name}" >/dev/null 2>&1 ; then
echo "Triggered autobuild at ${server}/job/${projectname}/lastBuild/"
else
echo "Could not trigger autobuild at ${server} (project not present/set up?)"
fi
# or with curl:
# cause=git-hook-trigger
# if curl --insecure --max-time 5 --connect-timeout 5 \
# --data-urlencode "token=${token}" \
# --data-urlencode "cause=${cause}" \
# --data-urlencode "branch=${branch_name}" \
# "${server}/job/${projectname}/buildWithParameters" >/dev/null 2>&1; then
# ...
}
if [ -n "$1" ] && [ -n "$2" ] && [ -n "$3" ]; then
trigger_jenkins "$2" "$3" "$1"
else
while read -r oldrev newrev refname; do
trigger_jenkins "$oldrev" "$newrev" "$refname"
done
fi
# vim:foldmethod=marker ts=2 ft=sh ai expandtab sw=2