Testing git runner
This commit is contained in:
parent
3b757304f7
commit
8c4f64cf96
29
checker/detector-lib-cfg
Normal file
29
checker/detector-lib-cfg
Normal file
|
@ -0,0 +1,29 @@
|
|||
#!/bin/bash
|
||||
|
||||
|
||||
# check if varriable is set
|
||||
[ -n "$CONFIG_DIR" ] || die "ConfigDir is not set - exit!"
|
||||
|
||||
|
||||
function detectorRunCapable(){
|
||||
if [ -f $CONFIG_DIR/detector.cfg ]
|
||||
then
|
||||
return 0
|
||||
else
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
function detectorLoadConfig(){
|
||||
# load config
|
||||
source $CONFIG_DIR/detector.cfg
|
||||
|
||||
# create cache dirs
|
||||
DET_DIR=$CCLONE_CACHE/detector
|
||||
DET_TAGS=$DET_DIR/tags
|
||||
DET_BRANCHES=$DET_DIR/branches
|
||||
[ -d $DET_TAGS ] || mkdir -p $DET_TAGS
|
||||
[ -d $DET_BRANCHES ] || mkdir -p $DET_BRANCHES
|
||||
}
|
||||
|
||||
|
37
checker/detector-lib-git
Normal file
37
checker/detector-lib-git
Normal file
|
@ -0,0 +1,37 @@
|
|||
#!/bin/bash
|
||||
|
||||
|
||||
function detectorSum(){
|
||||
local dir=$1
|
||||
[ -f $dir/FETCH_HEAD ] || touch $dir/FETCH_HEAD
|
||||
# use md5sum - it is in busybox
|
||||
cat $dir/FETCH_HEAD | md5sum | cut -f1 -d' '
|
||||
}
|
||||
|
||||
function detectorSumPersist(){
|
||||
detectorSum $1 > $CCLONE_CACHE/detectorSum
|
||||
}
|
||||
|
||||
function detectorCheckFetchHead(){
|
||||
# check if repo fetch_head changed, if so, return 1
|
||||
local dir=$1
|
||||
|
||||
[ -f $CCLONE_CACHE/detectorSum ] || touch $CCLONE_CACHE/detectorSum
|
||||
|
||||
newSum=$(detectorSum $dir)
|
||||
oldSum=$(cat $CCLONE_CACHE/detectorSum)
|
||||
|
||||
if [ "x$oldSum" = "x$newSum" ]
|
||||
then
|
||||
return 0
|
||||
else
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
function gitListTags(){
|
||||
local dir=$1
|
||||
git --no-paginate --git-dir="$dir" tag -l
|
||||
|
||||
}
|
11
checker/notify-commit
Executable file
11
checker/notify-commit
Executable file
|
@ -0,0 +1,11 @@
|
|||
#!/bin/bash
|
||||
# notify on commit push
|
||||
#
|
||||
# Parameters (via env)
|
||||
#
|
||||
# COMMIT - hash of commit
|
||||
# COMMIT_AUTHOR - author of commit
|
||||
# COMMIT_BRANCH - name of branch
|
||||
# PROJECT_NAME - project name specified in cloner.cfg
|
||||
echo "Commit: ($COMMIT: (AUTHOR=$COMMIT_AUTHOR; BRANCH=$COMMIT_BRANCH), Project: $PROJECT_NAME)"
|
||||
|
11
checker/notify-tag
Executable file
11
checker/notify-tag
Executable file
|
@ -0,0 +1,11 @@
|
|||
#!/bin/bash
|
||||
# notify on tag push (new tag or change)
|
||||
#
|
||||
# Parameters (via env)
|
||||
#
|
||||
# TAG_HASH - hash of tagged commit
|
||||
# TAG_NAME - tag label
|
||||
# TAG_AUTHOR - who authored the tag - if available
|
||||
# PROJECT_NAME - name of project specified in cloner.cfg
|
||||
echo "TAG: (Name=$TAG_NAME; AUTHOR=$TAG_AUTHOR; SHA: $TAG_HASH), PROJECT: $PROJECT_NAME"
|
||||
|
|
@ -7,6 +7,7 @@ mydir=$(dirname $(realpath $0))
|
|||
source $mydir/cloner-lib-general
|
||||
source $mydir/cloner-lib-auth
|
||||
source $mydir/cloner-lib-cfg
|
||||
source $mydir/detector-lib-cfg
|
||||
|
||||
|
||||
# interval - in minutes
|
||||
|
@ -46,4 +47,57 @@ fi
|
|||
|
||||
date +"%s" > $stampfile
|
||||
|
||||
# if detector is not enabled, quit quietly
|
||||
if ! detectorRunCapable
|
||||
then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
source $mydir/detector-lib-git
|
||||
|
||||
detectorLoadConfig
|
||||
|
||||
repodir=$(gen-mirror-path $repo)
|
||||
|
||||
if detectorCheckFetchHead $repodir
|
||||
then
|
||||
# nothing changed, just die
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# now, the fun begins!
|
||||
|
||||
# first, solve commits
|
||||
|
||||
# solve tags - remove nonexistent refs
|
||||
find $DET_TAGS -type f | sort | while read tagname
|
||||
do
|
||||
tag=$(basename $tagname)
|
||||
if ! git --git-dir $repodir tag -l | grep -q "^$tag$"
|
||||
then
|
||||
echo "Removing tag: $tag (was [$(cat $tagname)])"
|
||||
rm $tagname
|
||||
fi
|
||||
done
|
||||
|
||||
# tags that changed or was pushed as new
|
||||
git --git-dir $repodir tag -l | while read tagname
|
||||
do
|
||||
[ -f $DET_TAGS/$tagname ] || touch $DET_TAGS/$tagname
|
||||
oldsha=$(cat $DET_TAGS/$tagname)
|
||||
newsha=$(git --git-dir $repodir show-ref $tagname | cut -d' ' -f1)
|
||||
if ! [ "$oldsha" = "$newsha" ]
|
||||
then
|
||||
# TAG_HASH = $newsha
|
||||
# TAG_AUTHOR
|
||||
git --git-dir $repodir log $newsha -1 --pretty=format:"%an"
|
||||
|
||||
fi
|
||||
|
||||
done
|
||||
|
||||
|
||||
|
||||
# save hash to keep things clear
|
||||
#detectorSumPersist $repodir
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user