diff --git a/contrib/buildserver/categorize.sh b/contrib/buildserver/categorize.sh index 60ab9ff0..7a56560a 100755 --- a/contrib/buildserver/categorize.sh +++ b/contrib/buildserver/categorize.sh @@ -1,5 +1,9 @@ #!/bin/bash +## +# This script is rather slow and takes about 10 minutes +# One day I'll rewrite it in Python and it will run in seconds + if [ "$#" != "1" ]; then echo "syntax: $0 directory" exit 1 @@ -82,7 +86,7 @@ done # echo platform: ${platforms[*]} # echo svn: ${svns[*]} # echo date: ${dates[*]} -# echo files: ${files[*]} +# echo files: ${files[*]} echo ---------- Platform: ${platforms[*]} ----------- @@ -147,6 +151,5 @@ for date in ${dates[*]}; do done done - # That's all Folks! ## diff --git a/contrib/buildserver/dailyBuild.sh b/contrib/buildserver/dailyBuild.sh index ca83fb8b..f96d0bd6 100755 --- a/contrib/buildserver/dailyBuild.sh +++ b/contrib/buildserver/dailyBuild.sh @@ -1,45 +1,33 @@ #!/bin/bash -dow=$(date '+%w') # 0..6 day of the week -dom=$(date '+%d') # 1..31 day of the month - -a=$(/usr/local/bin/svn info .. | grep '^Last Changed Rev' | cut -f 2 -d':' | tr -d ' ') -b=$(/usr/local/bin/svn update . | grep ^At | cut '-d ' -f 3 | cut -d. -f 1 | tr -d ' ') - - -if [ "$a"xx != "$b"yy -o "$dow" == 1 -o "$dom" == 1 ]; then # build if changed or monday or 1st of month - b=$(/usr/local/bin/svn info . | grep ^Revision | cut '-d:' -f 2 | tr -d ' ') - echo ================================== - echo 'updated from svn:' $a 'to svn:' $b - echo ================================== - ssh rmills@rmillsmm 'cd ~/gnu/exiv2/buildserver ; /usr/local/bin/svn update . ; rm -rf build ; contrib/buildserver/dailyCMake.sh' - ssh rmills@rmillsmm-kubuntu 'cd ~/gnu/exiv2/buildserver ; /usr/local/bin/svn update . ; rm -rf build ; contrib/buildserver/dailyCMake.sh' - ssh rmills@rmillsmm-w7 'cd ~/gnu/exiv2/buildserver ; /usr/local/bin/svn update . ; rm -rf build ; contrib/buildserver/dailyCMake.sh' - ssh rmills@rmillsmm-w7 'export PLATFORM=msvc ;cd ~/gnu/exiv2/buildserver ; /usr/local/bin/svn update . ; rm -rf build ; contrib/buildserver/dailyCMake.sh' - ssh rmills@rmillsmm-w7 'export PLATFORM=mingw;export win32=true;cd ~/gnu/exiv2/buildserver ; /usr/local/bin/svn update . ; rm -rf build ; contrib/buildserver/dailyCMake.sh' - - ## - # test the delivery - date=$(date '+%Y-%m-%d+%H-%M-%S') - svn=$(/usr/local/bin/svn info .. | grep '^Last Changed Rev' | cut -f 2 -d':' | tr -d ' ') - ( - ssh rmills@rmillsmm 'cd ~/gnu/exiv2/buildserver ; contrib/buildserver/dailyTest.sh' - ssh rmills@rmillsmm-kubuntu 'cd ~/gnu/exiv2/buildserver ; contrib/buildserver/dailyTest.sh' - ssh rmills@rmillsmm-w7 'cd ~/gnu/exiv2/buildserver ; contrib/buildserver/dailyTest.sh' - ssh rmills@rmillsmm-w7 'export PLATFORM=msvc; cd ~/gnu/exiv2/buildserver ; contrib/buildserver/dailyTest.sh' - ssh rmills@rmillsmm-w7 'export PLATFORM=mingw;export win32=true;cd ~/gnu/exiv2/buildserver ; contrib/buildserver/dailyTest.sh' - ) | tr -d $'\r' | tee "/mmHD/Users/Shared/Jenkins/Home/userContent/builds/Daily/test-svn-${svn}-date-${date}.txt" - ## - # categorize the builds - ssh rmills@rmillsmm '~/gnu/exiv2/buildserver/contrib/buildserver/categorize.sh /mmHD/Users/Shared/Jenkins/Home/userContent/builds' +## +# This script is called by Jenkins to perform dailyBuild. +# The script should be run in the directory ~/gnu/exiv2/buildserver +# +# The script operates in 3 stages: +# 1 executes dailyCMake.sh to perform the build and test on the build nodes +# 2 executes dailyTest.sh to test that the build bundles are good +# 3 rebuilds all the links in the userContent/builds for "Category" access to the builds + +ssh rmills@rmillsmm 'cd ~/gnu/exiv2/buildserver ; /usr/local/bin/svn update . ; rm -rf build ; contrib/buildserver/dailyCMake.sh' +ssh rmills@rmillsmm-kubuntu 'cd ~/gnu/exiv2/buildserver ; /usr/local/bin/svn update . ; rm -rf build ; contrib/buildserver/dailyCMake.sh' +ssh rmills@rmillsmm-w7 'cd ~/gnu/exiv2/buildserver ; /usr/local/bin/svn update . ; rm -rf build ; contrib/buildserver/dailyCMake.sh' +ssh rmills@rmillsmm-w7 'cd ~/gnu/exiv2/buildserver ; /usr/local/bin/svn update . ; rm -rf build ; env PLATFORM=msvc contrib/buildserver/dailyCMake.sh' +ssh rmills@rmillsmm-w7 'cd ~/gnu/exiv2/buildserver ; /usr/local/bin/svn update . ; rm -rf build ; env PLATFORM=mingw win32=true contrib/buildserver/dailyCMake.sh' -else +## +# test the delivery +date=$(date '+%Y-%m-%d+%H-%M-%S') +svn=$(/usr/local/bin/svn info . | grep '^Last Changed Rev' | cut -f 2 -d':' | tr -d ' ') +ssh rmills@rmillsmm 'cd ~/gnu/exiv2/buildserver ; contrib/buildserver/dailyTest.sh' | tr -d $'\r' | tee --append "/mmHD/Users/Shared/Jenkins/Home/userContent/builds/Daily/test-svn-${svn}-date-${date}.txt" +ssh rmills@rmillsmm-kubuntu 'cd ~/gnu/exiv2/buildserver ; contrib/buildserver/dailyTest.sh' | tr -d $'\r' | tee --append "/mmHD/Users/Shared/Jenkins/Home/userContent/builds/Daily/test-svn-${svn}-date-${date}.txt" +ssh rmills@rmillsmm-w7 'cd ~/gnu/exiv2/buildserver ; contrib/buildserver/dailyTest.sh' | tr -d $'\r' | tee --append "/mmHD/Users/Shared/Jenkins/Home/userContent/builds/Daily/test-svn-${svn}-date-${date}.txt" +ssh rmills@rmillsmm-w7 'cd ~/gnu/exiv2/buildserver ; env PLATFORM=msvc contrib/buildserver/dailyTest.sh' | tr -d $'\r' | tee --append "/mmHD/Users/Shared/Jenkins/Home/userContent/builds/Daily/test-svn-${svn}-date-${date}.txt" +ssh rmills@rmillsmm-w7 'cd ~/gnu/exiv2/buildserver ; env PLATFORM=mingw win32=true contrib/buildserver/dailyTest.sh' | tr -d $'\r' | tee --append "/mmHD/Users/Shared/Jenkins/Home/userContent/builds/Daily/test-svn-${svn}-date-${date}.txt" - echo ================================== - echo 'no build needed svn = ' $a - echo ================================== - -fi +## +# categorize the builds +ssh rmills@rmillsmm 'cd ~/gnu/exiv2/buildserver ; contrib/buildserver/categorize.sh /mmHD/Users/Shared/Jenkins/Home/userContent/builds' # That's all Folks! ##