summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--hudson-builds/funcs_promotion.sh184
-rwxr-xr-xhudson-builds/promote-latest-builds.sh344
2 files changed, 314 insertions, 214 deletions
diff --git a/hudson-builds/funcs_promotion.sh b/hudson-builds/funcs_promotion.sh
new file mode 100644
index 0000000..cc5eba2
--- /dev/null
+++ b/hudson-builds/funcs_promotion.sh
@@ -0,0 +1,184 @@
+#! /bin/bash
+
+
+function prom_setup() {
+ lrootdir=$1
+ shift
+ ldest=$1
+ shift
+
+ lthisdir=`pwd`
+ cd $lrootdir
+
+ rm -rf $ldest
+ mkdir $ldest
+ mkdir $ldest/javadoc
+ mkdir $ldest/www
+ mkdir $ldest/jnlp-files
+
+ cd $lthisdir
+}
+
+function prom_lslatest() {
+ pattern=$1
+ shift
+ ls -rt | grep $pattern | tail -1
+}
+
+function prom_buildnumber_2() {
+ folder=$1
+ shift
+ echo $folder | awk -F '-' ' { print substr($2, 2); } '
+}
+
+function prom_buildnumber_3() {
+ folder=$1
+ shift
+ echo $folder | awk -F '-' ' { print substr($3, 2); } '
+}
+
+function prom_buildnumber_4() {
+ folder=$1
+ shift
+ echo $folder | awk -F '-' ' { print substr($4, 2); } '
+}
+
+function prom_verify_artifacts() {
+ name=$1
+ shift
+ artia=$1
+ shift
+ artib=$1
+ shift
+
+ OK=0
+ diff -w $artia $artib && OK=1
+ if [ $OK -eq 0 ] ; then
+ echo "ERROR: $name artifacts differ $artia and $artib"
+ fi
+}
+
+#
+# #1 module name, IE gluegen, jogl, jocl or joal
+# #2 source folder of artifacts
+# #3 destination folder of artifacts
+# #4-n submodule name within the ZIP files
+#
+# Example:
+# promote_files gluegen /builds/gluegen-b33 tmp-archive gluegen
+# promote_files jogl /builds/jogl-b211 tmp-archive nativewindow jogl newt
+#
+function prom_promote_files() {
+ module=$1
+ shift
+ sourcedir=$1
+ shift
+ destdir=$1
+ shift
+ submodules=$*
+
+ lthisdir=`pwd`
+
+ echo "INFO: Promoting files: $module, submodules <$submodules>, from $sourcedir"
+ # copy the platform zip files
+ cp -a $sourcedir/$module*.zip $destdir/
+ cp -a $sourcedir/artifact.properties $destdir/$module.artifact.properties
+ cd $destdir
+ # unpack the platform zip files
+ for i in $os_and_archs ; do
+ zfile=`find . -name $module\*$i.zip`
+ if [ -z "$zfile" ] ; then
+ echo "ERROR: No platform ZIP file for module $module, sub $sub, platform $i, sdir $sourcedir"
+ exit 1
+ fi
+ zfolder=`basename $zfile .zip`
+ echo "INFO: unzip $module $i - $zfile -> $zfolder"
+ unzip -q $zfile
+ prom_verify_artifacts $module $module.artifact.properties $zfolder/artifact.properties
+ done
+ # copy the platform JAR files from each platform zip folder
+ for i in $os_and_archs_minus_one ; do
+ # zip folder verfified above already
+ zfile=`find . -name $module\*$i.zip`
+ zfolder=`basename $zfile .zip`
+ for sub in $submodules ; do
+ jars=`find $zfolder -name $sub\*$i\*.jar`
+ if [ -z "$jars" ] ; then
+ echo "ERROR: No platform JAR file for module $module, sub $sub, platform $i, sdir $sourcedir"
+ exit 1
+ fi
+ for j in $jars ; do
+ cp -av $j .
+ done
+ done
+ done
+ # copy the master pic JAR files
+ # zip folder verfified above already
+ zfile=`find . -name $module\*$masterpick.zip`
+ zfolder=`basename $zfile .zip`
+ for sub in $submodules ; do
+ jars=`find $zfolder -name $sub\*$masterpick\*.jar`
+ if [ -z "$jars" ] ; then
+ echo "ERROR: No platform JAR file for module $module, sub $sub, masterpick platform $masterpick, sdir $sourcedir"
+ exit 1
+ fi
+ jars=`find $zfolder -name $sub\*.jar`
+ if [ -z "$jars" ] ; then
+ echo "ERROR: No JAR files for module $module, sub $sub, masterpick $masterpick, sdir $sourcedir"
+ exit 1
+ fi
+ for j in $jars ; do
+ cp -av $j .
+ done
+ done
+ cp -av $zfolder/jnlp-files/* ./jnlp-files/
+
+ cd $lthisdir
+}
+
+function prom_cleanup() {
+ destdir=$1
+ shift
+
+ lthisdir=`pwd`
+ cd $destdir
+
+ for i in $os_and_archs ; do
+ for j in *$i.zip ; do
+ bname=`basename $j .zip`
+ if [ -d $bname ] ; then
+ echo "INFO: delete folder $bname"
+ rm -rf $bname
+ fi
+ done
+ done
+ cd $lthisdir
+}
+
+function prom_integrity_check() {
+ destdir=$1
+ shift
+
+ lthisdir=`pwd`
+ cd $destdir
+
+ mkdir dump
+ cd dump
+ for i in ../*.jar ; do
+ bname=`basename $i`
+ echo -n "INFO: integrity check - $bname - "
+ OK=0
+ jar xvf $i >& $bname.log && OK=1
+ if [ $OK -eq 0 ] ; then
+ echo ERROR
+ cat $bname.log
+ else
+ echo OK
+ fi
+ done
+ echo
+ cd ..
+ rm -rf dump
+ cd $lthisdir
+}
+
diff --git a/hudson-builds/promote-latest-builds.sh b/hudson-builds/promote-latest-builds.sh
index f9da1e0..4197a77 100755
--- a/hudson-builds/promote-latest-builds.sh
+++ b/hudson-builds/promote-latest-builds.sh
@@ -9,6 +9,11 @@
sdir=`dirname $0`
+thisdir=`pwd`
+
+logfile=$thisdir/`basename $0 .sh`.log
+
+. $sdir/funcs_promotion.sh
. $sdir/../deployment/funcs_jnlp_relocate.sh
archivedir=/srv/www/jogamp.org/deployment/archive
@@ -18,250 +23,161 @@ os_and_archs_minus_one="linux-i586 macosx-universal windows-amd64 windows-i586"
masterpick="linux-amd64"
os_and_archs="$masterpick linux-i586 macosx-universal windows-amd64 windows-i586"
-thisdir=`pwd`
-cd $rootdir
-
dest=tmp-archive
-rm -rf $dest
-mkdir $dest
-mkdir $dest/javadoc
-mkdir $dest/www
-mkdir $dest/jnlp-files
+cd $rootdir
-function lslatest() {
- pattern=$1
- shift
- ls -rt | grep $pattern | tail -1
-}
+function promote-latest-builds() {
+ echo
+ echo "Promotion of latest files"
+ echo `date`
+ echo
+ prom_setup $rootdir $dest
-function buildnumber_2() {
- folder=$1
- shift
- echo $folder | awk -F '-' ' { print substr($2, 2); } '
-}
+ gluegenslave=`prom_lslatest gluegen-b`
+ bgluegenslave=`prom_buildnumber_2 $gluegenslave`
+ gluegenmaster=`prom_lslatest gluegen-master-b`
+ bgluegenmaster=`prom_buildnumber_3 $gluegenmaster`
+ echo
+ echo GLUEGEN
+ echo
+ echo slave build $bgluegenslave - $gluegenslave
+ echo master build $bgluegenmaster - $gluegenmaster
+ echo
+ echo "gluegen.build.number=$bgluegenslave" >> $dest/aggregated.artifact.properties
-function buildnumber_3() {
- folder=$1
- shift
- echo $folder | awk -F '-' ' { print substr($3, 2); } '
-}
+ prom_promote_files gluegen $gluegenslave $dest gluegen
-function buildnumber_4() {
- folder=$1
- shift
- echo $folder | awk -F '-' ' { print substr($4, 2); } '
-}
+ cp -a $gluegenmaster/artifact.properties $dest/javadoc/gluegen-master.artifact.properties
+ mkdir $dest/javadoc/gluegen
+ cp -a $gluegenmaster/javadoc.zip $dest/javadoc/gluegen
+ cd $dest/javadoc/gluegen
+ echo "INFO: gluegen master javadoc zip"
+ unzip -q javadoc.zip
+ cd $rootdir
-function verify_artifacts() {
- name=$1
- shift
- artia=$1
- shift
- artib=$1
- shift
-
- OK=0
- diff -w $artia $artib && OK=1
- if [ $OK -eq 0 ] ; then
- echo "ERROR: $name artifacts differ $artia and $artib"
- fi
-}
+ joglslave=`prom_lslatest jogl-b`
+ bjoglslave=`prom_buildnumber_2 $joglslave`
+ joglmaster=`prom_lslatest jogl-master-b`
+ bjoglmaster=`prom_buildnumber_3 $joglmaster`
+ echo
+ echo JOGL
+ echo
+ echo slave build $bjoglslave - $joglslave
+ echo master build $bjoglmaster - $joglmaster
+ echo
+ echo "jogl.build.number=$bjoglslave" >> $dest/aggregated.artifact.properties
-function promote_files() {
- name=$1
- shift
- sourcedir=$1
- shift
+ prom_promote_files jogl $joglslave $dest nativewindow jogl newt
- cp -a $sourcedir/$name*.zip $dest/
- cp -a $sourcedir/artifact.properties $dest/$name.artifact.properties
- cd $dest
- for i in $os_and_archs ; do
- fname=`find . -name $name*$i.zip`
- bname=`basename $fname .zip`
- echo "INFO: $name unpacking $bname"
- unzip -q $fname
- verify_artifacts $name $name.artifact.properties $bname/artifact.properties
- done
- echo "INFO: $name promoting files"
- for i in $os_and_archs_minus_one ; do
- dname=`find . -name $name*$i`
- cp -av $dname/jar/*-natives-*.jar .
+ cp -a $joglmaster/artifact.properties $dest/javadoc/jogl-master.artifact.properties
+ mkdir $dest/javadoc/jogl
+ cp -a $joglmaster/javadoc*.zip $dest/javadoc/jogl
+ cd $dest/javadoc/jogl
+ for i in *.zip ; do
+ echo "INFO: unzip $i"
+ unzip -q $i
done
- fname=`find . -name $name*$masterpick.zip`
- bname=`basename $fname .zip`
- cp -av $bname/jar/*.jar .
- cp -av $bname/jnlp-files/* ./jnlp-files/
cd $rootdir
-}
-function cleanup() {
+ jogldemosmaster=`prom_lslatest jogl-demos-master-b`
+ bjogldemosmaster=`prom_buildnumber_4 $jogldemosmaster`
+ echo
+ echo JOGL DEMOS
+ echo
+ echo master build $bjogldemosmaster - $jogldemosmaster
+ echo
+ echo "jogl-demos.build.number=$bjogldemosmaster" >> $dest/aggregated.artifact.properties
+
+ cp -a $jogldemosmaster/jogl-demos*.zip $dest/
+ cp -a $jogldemosmaster/artifact.properties $dest/jogl-demos.artifact.properties
cd $dest
- for i in $os_and_archs ; do
- for j in *$i.zip ; do
- bname=`basename $j .zip`
- if [ -d $bname ] ; then
- echo "INFO: delete folder $bname"
- rm -rf $bname
- fi
- done
- done
+
+ fname=`find . -name jogl-demos*.zip`
+ bname=`basename $fname .zip`
+ echo "INFO: unzip $fname -> $bname"
+ unzip -q $bname.zip
+ prom_verify_artifacts jogl-demos jogl-demos.artifact.properties $bname/artifact.properties
+ cp -a $bname/jar/*.jar .
+ cp -a $bname/jnlp-files/* ./jnlp-files/
+ cp -a $bname/www/* ./www/
+
cd $rootdir
-}
-function integrity_check() {
- cd $dest
- mkdir dump
- cd dump
- for i in ../*.jar ; do
- bname=`basename $i`
- echo -n "INFO: integrity check - $bname - "
- OK=0
- jar xvf $i >& $bname.log && OK=1
- if [ $OK -eq 0 ] ; then
- echo ERROR
- cat $bname.log
- else
- echo OK
- fi
- done
+ #########################################################
+ ####### FIXME : JOCL, adapt to the new archive structure
+ #########################################################
+
+ joclslave=`prom_lslatest jocl-b`
+ bjoclslave=`prom_buildnumber_2 $joclslave`
+ joclmaster=`prom_lslatest jocl-master-b`
+ bjoclmaster=`prom_buildnumber_3 $joclmaster`
echo
- cd ..
- rm -rf dump
- cd $rootdir
-}
+ echo JOCL
+ echo
+ echo slave build $bjoclslave - $joclslave
+ echo master build $bjoclmaster - $joclmaster
+ echo
+ echo "jocl.build.number=$bjoclslave" >> $dest/aggregated.artifact.properties
-gluegenslave=`lslatest gluegen-b`
-bgluegenslave=`buildnumber_2 $gluegenslave`
-gluegenmaster=`lslatest gluegen-master-b`
-bgluegenmaster=`buildnumber_3 $gluegenmaster`
-echo
-echo GLUEGEN
-echo
-echo slave build $bgluegenslave - $gluegenslave
-echo master build $bgluegenmaster - $gluegenmaster
-echo
-echo "gluegen.build.number=$bgluegenslave" >> $dest/aggregated.artifact.properties
-
-promote_files gluegen $gluegenslave
-
-cp -a $gluegenmaster/artifact.properties $dest/javadoc/gluegen-master.artifact.properties
-mkdir $dest/javadoc/gluegen
-cp -a $gluegenmaster/javadoc.zip $dest/javadoc/gluegen
-cd $dest/javadoc/gluegen
-unzip -q javadoc.zip
-cd $rootdir
+ #
+ #prom_promote_files jocl $joglslave $dest jocl
+ #
-joglslave=`lslatest jogl-b`
-bjoglslave=`buildnumber_2 $joglslave`
-joglmaster=`lslatest jogl-master-b`
-bjoglmaster=`buildnumber_3 $joglmaster`
-echo
-echo JOGL
-echo
-echo slave build $bjoglslave - $joglslave
-echo master build $bjoglmaster - $joglmaster
-echo
-echo "jogl.build.number=$bjoglslave" >> $dest/aggregated.artifact.properties
-
-promote_files jogl $joglslave
-
-cp -a $joglmaster/artifact.properties $dest/javadoc/jogl-master.artifact.properties
-mkdir $dest/javadoc/jogl
-cp -a $joglmaster/javadoc*.zip $dest/javadoc/jogl
-cd $dest/javadoc/jogl
-for i in *.zip ; do
- unzip -q $i
-done
-cd $rootdir
+ cp -a $joclslave/jocl*jar $dest/
+ cp -a $joclslave/artifact.properties $dest/jocl.artifact.properties
-jogldemosmaster=`lslatest jogl-demos-master-b`
-bjogldemosmaster=`buildnumber_4 $jogldemosmaster`
-echo
-echo JOGL DEMOS
-echo
-echo master build $bjogldemosmaster - $jogldemosmaster
-echo
-echo "jogl-demos.build.number=$bjogldemosmaster" >> $dest/aggregated.artifact.properties
-
-cp -a $jogldemosmaster/jogl-demos*.zip $dest/
-cp -a $jogldemosmaster/artifact.properties $dest/jogl-demos.artifact.properties
-cd $dest
-
-fname=`find . -name jogl-demos*.zip`
-bname=`basename $fname .zip`
-unzip -q $bname.zip
-verify_artifacts jogl-demos jogl-demos.artifact.properties $bname/artifact.properties
-cp -a $bname/jar/*.jar .
-cp -a $bname/jnlp-files/* ./jnlp-files/
-cp -a $bname/www/* ./www/
+ cp -a $joclmaster/artifact.properties $dest/javadoc/jocl-master.artifact.properties
+ mkdir $dest/javadoc/jocl
+ cp -a $joclmaster/jocl-javadoc.zip $dest/javadoc/jocl/
+ cd $dest/javadoc/jocl
+ echo "INFO: unzip jocl-javadoc zip"
+ unzip -q jocl-javadoc.zip
+ cd $rootdir
-cd $rootdir
+ jocldemosslave=`prom_lslatest jocl-demos-b`
+ bjocldemosslave=`prom_buildnumber_3 $jocldemosslave`
+ echo
+ echo JOCL DEMOS
+ echo
+ echo slave build $bjocldemosslave - $jocldemosslave
+ echo
+ echo "jocl-demos.build.number=$bjocldemosslave" >> $dest/aggregated.artifact.properties
-#########################################################
-####### FIXME : JOCL, adapt to the new archive structure
-#########################################################
-
-joclslave=`lslatest jocl-b`
-bjoclslave=`buildnumber_2 $joclslave`
-joclmaster=`lslatest jocl-master-b`
-bjoclmaster=`buildnumber_3 $joclmaster`
-echo
-echo JOCL
-echo
-echo slave build $bjoclslave - $joclslave
-echo master build $bjoclmaster - $joclmaster
-echo
-echo "jocl.build.number=$bjoclslave" >> $dest/aggregated.artifact.properties
-
-cp -a $joclslave/jocl*jar $dest/
-cp -a $joclslave/artifact.properties $dest/jocl.artifact.properties
-
-cp -a $joclmaster/artifact.properties $dest/javadoc/jocl-master.artifact.properties
-mkdir $dest/javadoc/jocl
-cp -a $joclmaster/jocl-javadoc.zip $dest/javadoc/jocl/
-cd $dest/javadoc/jocl
-unzip -q jocl-javadoc.zip
-cd $rootdir
+ cp -a $jocldemosslave/jocl-demos*jar $dest/
+ cp -a $jocldemosslave/artifact.properties $dest/jocl-demos.artifact.properties
-jocldemosslave=`lslatest jocl-demos-b`
-bjocldemosslave=`buildnumber_3 $jocldemosslave`
-echo
-echo JOCL DEMOS
-echo
-echo slave build $bjocldemosslave - $jocldemosslave
-echo
-echo "jocl-demos.build.number=$bjocldemosslave" >> $dest/aggregated.artifact.properties
+ prom_integrity_check $dest
-cp -a $jocldemosslave/jocl-demos*jar $dest/
-cp -a $jocldemosslave/artifact.properties $dest/jocl-demos.artifact.properties
+ prom_cleanup $dest
-integrity_check
+ uri=gluegen_$bgluegenslave-jogl_$bjoglslave-jocl_$bjoclslave
+ url=http://jogamp.org/deployment/archive/gluegen_$bgluegenslave-jogl_$bjoglslave-jocl_$bjoclslave
+ wsdir=$archivedir/gluegen_$bgluegenslave-jogl_$bjoglslave-jocl_$bjoclslave
-cleanup
+ rm -rf $wsdir
+ mv $dest $wsdir
-uri=gluegen_$bgluegenslave-jogl_$bjoglslave-jocl_$bjoclslave
-url=http://jogamp.org/deployment/archive/gluegen_$bgluegenslave-jogl_$bjoglslave-jocl_$bjoclslave
-wsdir=$archivedir/gluegen_$bgluegenslave-jogl_$bjoglslave-jocl_$bjoclslave
+ cd $wsdir
-rm -rf $wsdir
-mv $dest $wsdir
+ echo
+ echo aggregation.properties
+ echo
+ cat jocl-demos.artifact.properties jogl-demos.artifact.properties | sort -u > jocl-demos-jogl-demos.artifact.properties.sorted
+ sort -u aggregated.artifact.properties > aggregated.artifact.properties.sorted
+ diff -Nurbw aggregated.artifact.properties.sorted jocl-demos-jogl-demos.artifact.properties.sorted
+
+ copy_relocate_jnlps $url $wsdir
-echo
-echo Aggregation folder $wsdir for URL $url
-echo
+ remove_security_tag_jnlps $wsdir
-cd $wsdir
+ echo
+ echo Aggregation folder $wsdir for URL $url
+ echo
-echo
-echo aggregation.properties
-echo
-cat jocl-demos.artifact.properties jogl-demos.artifact.properties | sort -u > jocl-demos-jogl-demos.artifact.properties.sorted
-sort -u aggregated.artifact.properties > aggregated.artifact.properties.sorted
-diff -Nurbw aggregated.artifact.properties.sorted jocl-demos-jogl-demos.artifact.properties.sorted
+ cp -av $logfile $wsdir
+}
-copy_relocate_jnlps $url $wsdir
+promote-latest-builds 2>&1 | tee $logfile
-remove_security_tag_jnlps $wsdir