From 63489daaccdc2a41c642ba787caa305376b2e2de Mon Sep 17 00:00:00 2001 From: Robin Mills Date: Sat, 24 Sep 2016 13:35:31 +0000 Subject: [PATCH] #1230 Buildserver maintenance. --- contrib/buildserver/ReadMe.txt | 54 +++++-------------- contrib/buildserver/cmakeDailyAll.sh | 4 -- contrib/buildserver/dailyBuild.sh | 45 ++++++++++++++++ .../{cmake_daily.sh => dailyCMake.sh} | 0 contrib/buildserver/dailyCMakeAll.sh | 5 ++ contrib/buildserver/dailyTestAll.sh | 5 ++ .../{test_daily.sh => testDaily.sh} | 0 contrib/buildserver/testDailyAll.sh | 4 -- 8 files changed, 68 insertions(+), 49 deletions(-) delete mode 100755 contrib/buildserver/cmakeDailyAll.sh create mode 100755 contrib/buildserver/dailyBuild.sh rename contrib/buildserver/{cmake_daily.sh => dailyCMake.sh} (100%) create mode 100755 contrib/buildserver/dailyCMakeAll.sh create mode 100755 contrib/buildserver/dailyTestAll.sh rename contrib/buildserver/{test_daily.sh => testDaily.sh} (100%) delete mode 100755 contrib/buildserver/testDailyAll.sh diff --git a/contrib/buildserver/ReadMe.txt b/contrib/buildserver/ReadMe.txt index ae82b435..34fbc7b0 100644 --- a/contrib/buildserver/ReadMe.txt +++ b/contrib/buildserver/ReadMe.txt @@ -4,17 +4,17 @@ contrib/buildserver/ReadMe.txt 737 rmills@rmillsmm:~/gnu/exiv2/trunk/contrib/buildserver $ dir User Documentation and Scripts -rw-r--r--@ 1 rmills staff 63B 15 Dec 22:26 ReadMe.txt <---- This file --rwxr-xr-x@ 1 rmills staff 440B 15 Dec 23:07 cmakeDailyAll.sh* <---- run cmake_daily.sh on all platforms --rwxr-xr-x@ 1 rmills staff 424B 14 Dec 23:12 testDailyAll.sh* <---- run test_daily.sh on all platform +-rwxr-xr-x@ 1 rmills staff 440B 15 Dec 23:07 dailyBuild.sh* <---- called by Jenkins to build and test every day +-rwxr-xr-x@ 1 rmills staff 440B 15 Dec 23:07 dailyCMakeAll.sh* <---- run dailyCMake.sh on all platforms +-rwxr-xr-x@ 1 rmills staff 424B 14 Dec 23:12 dailyTestAll.sh* <---- run dailyTest.sh on all platform +-rwxr-xr-x@ 1 rmills staff 5.8K 14 Dec 21:55 dailyCMake.sh* <---- Builds exiv2 (mostly using cmake) for one platform +-rwxr-xr-x@ 1 rmills staff 3.6K 15 Dec 05:49 dailyTest.sh* <---- Called by Jenkins to sync and build all platforms -rw-r--r--@ 1 rmills staff 655B 19 Dec 21:06 functions.so <---- library for the scripts Documentation and Scripts used by Jenkins -rwxr-xr-x+ 1 rmills staff 11K 15 Dec 22:17 jenkins_build.sh* <---- Primary build script (called by Jenkins) -rw-r--r--+ 1 rmills staff 6.3K 15 Dec 22:17 jenkins_build.bat <---- Windows build script (called by jenkins_build.sh) --rwxr-xr-x@ 1 rmills staff 5.8K 14 Dec 21:55 cmake_daily.sh* <---- Builds exiv2 using cmake on all platforms --rwxr-xr-x@ 1 rmills staff 3.6K 15 Dec 05:49 test_daily.sh* <---- Called by Jenkins to sync and build all platforms --rw-r--r--@ 1 rmills staff 4.0K 14 Dec 18:31 dailyReadMe.txt <---- Template for the bundle ReadMe.txt generated by cmake_daily.sh --rwxr-xr-x@ 1 rmills staff 2.3K 16 Dec 19:41 spread* <---- Used to update the 'Categorized' builds +-rw-r--r--@ 1 rmills staff 4.0K 14 Dec 18:31 dailyReadMe.txt <---- Template for bundle ReadMe.txt generated by dailyCMake.sh Detecting if svn has updated a branch ------------------------------------- @@ -80,36 +80,7 @@ Buildserver Scripts Trigger: 2am every day Script: cd ~/gnu/exiv2/buildserver - a=$(/usr/local/bin/svn info . | grep ^Revision | cut '-d:' -f 2 | tr -d ' ') - b=$(/usr/local/bin/svn update . | grep ^At | cut '-d ' -f 3 | cut -d. -f 1 | tr -d ' ') - if [ "$a" == "$b" ]; then - echo ================================== - echo 'no build needed svn = ' $a - echo ================================== - else - 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/cmake_daily.sh' - ssh rmills@rmillsmm-kubuntu 'cd ~/gnu/exiv2/buildserver ; /usr/local/bin/svn update . ; rm -rf build ; contrib/buildserver/cmake_daily.sh' - ssh rmills@rmillsmm-w7 'cd ~/gnu/exiv2/buildserver ; /usr/local/bin/svn update . ; rm -rf build ; contrib/buildserver/cmake_daily.sh' - ssh rmills@rmillsmm-w7 'export PLATFORM=msvc;cd ~/gnu/exiv2/buildserver ; /usr/local/bin/svn update . ; rm -rf build ; contrib/buildserver/cmake_daily.sh' - ## - # test the delivery - date=$(date '+%Y-%m-%d+%H-%M-%S') - svn=$(/usr/local/bin/svn info . | grep ^Revision | cut -d: -f 2 | tr -d ' ') - ( - ssh rmills@rmillsmm '~/gnu/exiv2/buildserver/contrib/buildserver/test_daily.sh' - ssh rmills@rmillsmm-kubuntu '~/gnu/exiv2/buildserver/contrib/buildserver/test_daily.sh' - ssh rmills@rmillsmm-w7 '~/gnu/exiv2/buildserver/contrib/buildserver/test_daily.sh' - ssh rmills@rmillsmm-w7 'export PLATFORM=msvc;~/gnu/exiv2/buildserver/contrib/buildserver/test_daily.sh' - ) | 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' - fi - + contrib/buildserver/dailyBuild.sh Comment: This script builds once a day and ultimately publishes the build. @@ -120,14 +91,15 @@ Buildserver Scripts I don't want to run this on code submission as the build takes about 1.5 hours to build all 12 Visual Studio builds (2005/2008/2010/2012/2013/2015) 32/64 - Currently MinGW has not been implemented. + MinGW/32 is built using the compiler supplied by Qt 5.6 (GCC 4.9.2) + MinGW/32 is build with autotools because I have not been able to get cmake to work on MinGW. There are three quite different parts of the script: - 1) Use CMake to build on each platform using cmake_daily.sh - 2) Validate each platform using test_daily.sh + 1) Use CMake to build on each platform using dailyCMake.sh + 2) Validate each platform using dailyTest.sh 3) Categorize the build (create links for Platform/SVN/Date/Latest) - At the moment, the "pruning" of the builds is performed by cmake_daily.sh + At the moment, the "pruning" of the builds is performed by dailyCMake.sh Theme.css --------- @@ -216,4 +188,4 @@ Notes concerning MinGW Robin Mills robin@clanmills.com -2015-12-17 +2016-09-24 diff --git a/contrib/buildserver/cmakeDailyAll.sh b/contrib/buildserver/cmakeDailyAll.sh deleted file mode 100755 index 36a7a13d..00000000 --- a/contrib/buildserver/cmakeDailyAll.sh +++ /dev/null @@ -1,4 +0,0 @@ -ssh rmills@rmillsmm 'cd ~/gnu/exiv2/buildserver;contrib/buildserver/cmake_daily.sh' -ssh rmills@rmillsmm-kubuntu 'cd ~/gnu/exiv2/buildserver;contrib/buildserver/cmake_daily.sh' -ssh rmills@rmillsmm-w7 'cd ~/gnu/exiv2/buildserver;contrib/buildserver/cmake_daily.sh' -ssh rmills@rmillsmm-w7 'export PLATFORM=msvc ; cd ~/gnu/exiv2/buildserver;contrib/buildserver/cmake_daily.sh' diff --git a/contrib/buildserver/dailyBuild.sh b/contrib/buildserver/dailyBuild.sh new file mode 100755 index 00000000..ca83fb8b --- /dev/null +++ b/contrib/buildserver/dailyBuild.sh @@ -0,0 +1,45 @@ +#!/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' + +else + + echo ================================== + echo 'no build needed svn = ' $a + echo ================================== + +fi + +# That's all Folks! +## diff --git a/contrib/buildserver/cmake_daily.sh b/contrib/buildserver/dailyCMake.sh similarity index 100% rename from contrib/buildserver/cmake_daily.sh rename to contrib/buildserver/dailyCMake.sh diff --git a/contrib/buildserver/dailyCMakeAll.sh b/contrib/buildserver/dailyCMakeAll.sh new file mode 100755 index 00000000..e9360606 --- /dev/null +++ b/contrib/buildserver/dailyCMakeAll.sh @@ -0,0 +1,5 @@ +ssh rmills@rmillsmm 'cd ~/gnu/exiv2/buildserver;contrib/buildserver/dailyCMake.sh' +ssh rmills@rmillsmm-kubuntu 'cd ~/gnu/exiv2/buildserver;contrib/buildserver/dailyCMake.sh' +ssh rmills@rmillsmm-w7 'cd ~/gnu/exiv2/buildserver;contrib/buildserver/dailyCMake.sh' +ssh rmills@rmillsmm-w7 'export PLATFORM=msvc ;cd ~/gnu/exiv2/buildserver;contrib/buildserver/dailyCMake.sh' +ssh rmills@rmillsmm-w7 'export PLATFORM=mingw; export win32=true; cd ~/gnu/exiv2/buildserver;contrib/buildserver/dailyCMake.sh' diff --git a/contrib/buildserver/dailyTestAll.sh b/contrib/buildserver/dailyTestAll.sh new file mode 100755 index 00000000..8995f8cc --- /dev/null +++ b/contrib/buildserver/dailyTestAll.sh @@ -0,0 +1,5 @@ +ssh rmills@rmillsmm '~/gnu/exiv2/buildserver/contrib/buildserver/dailyTest.sh' +ssh rmills@rmillsmm-kubuntu '~/gnu/exiv2/buildserver/contrib/buildserver/dailyTest.sh' +ssh rmills@rmillsmm-w7 '~/gnu/exiv2/buildserver/contrib/buildserver/dailyTest.sh' +ssh rmills@rmillsmm-w7 'export PLATFORM=msvc ;~/gnu/exiv2/buildserver/contrib/buildserver/dailyTest.sh' +ssh rmills@rmillsmm-w7 'export PLATFORM=mingw; export win32=true;~/contrib/buildserver/dailyCMake.sh' diff --git a/contrib/buildserver/test_daily.sh b/contrib/buildserver/testDaily.sh similarity index 100% rename from contrib/buildserver/test_daily.sh rename to contrib/buildserver/testDaily.sh diff --git a/contrib/buildserver/testDailyAll.sh b/contrib/buildserver/testDailyAll.sh deleted file mode 100755 index 7eb6686c..00000000 --- a/contrib/buildserver/testDailyAll.sh +++ /dev/null @@ -1,4 +0,0 @@ -ssh rmills@rmillsmm '~/gnu/exiv2/buildserver/contrib/buildserver/test_daily.sh' -ssh rmills@rmillsmm-kubuntu '~/gnu/exiv2/buildserver/contrib/buildserver/test_daily.sh' -ssh rmills@rmillsmm-w7 '~/gnu/exiv2/buildserver/contrib/buildserver/test_daily.sh' -ssh rmills@rmillsmm-w7 'export PLATFORM=msvc ; ~/gnu/exiv2/buildserver/contrib/buildserver/test_daily.sh'