#!/bin/bash # Hudson creates a repo in ${sourceFolder} (in the job workspace); copy it into other places for access by downstream jobs and users # must set -version if we can't deduce it from the JOB_NAME # set defaults include="*" exclude="--exclude '.blobstore'" # exclude the .blobstore INTERNALDESTROOT=/home/hudson/static_build_env/jbds/targetplatforms # set jbosstools defaults projectName='jbosstools' DESTINATIONROOT=tools@filemgmt.jboss.org:/downloads_htdocs/tools/targetplatforms version=""; # must set -version if we can't deduce it from the JOB_NAME if [[ ${JOB_NAME} ]] && [[ ${JOB_NAME##*-target-platform-*} != ${JOB_NAME} ]]; then version=${JOB_NAME##*-target-platform-} fi if [[ ${JOB_NAME} ]] && [[ ${JOB_NAME##*targetplatform-*} != ${JOB_NAME} ]]; then version=${JOB_NAME##*targetplatform-} fi while [ "$#" -gt 0 ]; do case $1 in '-DESTINATIONROOT') DESTINATIONROOT="$2" shift 2;; '-sourceFolder') sourceFolder="$2" shift 2;; '-projectName') projectName="$2" shift 2;; '-version') version="$2" shift 2;; # deprecated: shorthand for setting projectName and DESTINATIONROOT for publishing JBDS to internal server '-jbdevstudio') projectName='jbdevstudio' DESTINATIONROOT=/qa/services/http/binaries/RHDS/targetplatforms shift 1;; *) echo "Unknown parameter " $1 exit 1;; esac done if [[ ! ${version} ]]; then echo "version not set. Must define version, eg., $0 -version 4.30.0.Final -jbdevstudio" exit 1 fi # source target platform site from workspace, if not set on commandline if [[ ! ${sourceFolder} ]]; then sourceFolder=${WORKSPACE}/${projectName}/multiple/target/${projectName}-multiple.target.repo; fi # eg., jbosstoolstarget-4.30.0.Final.zip targetZipFile=${projectName}target-${version}.zip # publish to this location on download.jboss.org or www.qa.jboss.com, eg., tools@filemgmt.jboss.org:/downloads_htdocs/tools/targetplatforms/jbosstoolstarget/4.30.0.Final DESTINATION=${DESTINATIONROOT}/${projectName}target/${version} # keep a copy internally and ref that in downstream builds via hudson-settings.xml, eg., /home/hudson/static_build_env/jbds/targetplatforms/jbdevstudio/4.30.0.Final INTERNALDEST=${INTERNALDESTROOT}/${projectName}target/${version} if [[ -d ${sourceFolder} ]]; then pushd ${sourceFolder} >/dev/null if [[ ! -d ${INTERNALDEST} ]]; then mkdir -p ${INTERNALDEST} fi du -sh ${sourceFolder} ${INTERNALDEST} # JBDS-2380 massage content.jar to remove all external 3rd party references: target platform site should be self contained wget --no-check-certificate https://raw.github.com/jbosstools/jbosstools-download.jboss.org/master/jbosstools/updates/requirements/remove.references.xml ant -f remove.references.xml -DworkDir=`pwd` rm -f remove.references.xml # copy/update into central place for reuse by local downstream build jobs date; rsync -arzqc --protocol=28 --delete-after --delete-excluded --rsh=ssh ${exclude} ${include} ${INTERNALDEST}/REPO/ du -sh ${sourceFolder} ${INTERNALDEST} # upload to http://download.jboss.org/jbossotools/targetplatforms/jbosstoolstarget/4.30.0.Final/REPO/ for public use if [[ ${DESTINATION/:/} == ${DESTINATION} ]]; then # local path, no user@server:/path mkdir -p ${DESTINATION}/ else DESTPARENT=${DESTINATION%/*}; NEWFOLDER=${DESTINATION##*/} DESTPARENT2=${DESTPARENT%/*}; NEWFOLDER2=${DESTPARENT##*/} echo "mkdir ${NEWFOLDER2}" | sftp ${DESTPARENT2} echo "mkdir ${NEWFOLDER}" | sftp ${DESTPARENT} fi # if the following line fails, make sure that ${DESTINATION} is already created on target server date; rsync -arzqc --protocol=28 --delete-after --delete-excluded --rsh=ssh ${exclude} ${include} ${DESTINATION}/REPO/ tempDir=`mktemp -d -t ${targetZipFile}.XXXXXXXX`; mkdir -p ${tempDir} # create zip, then upload to http://download.jboss.org/jbossotools/updates/target-platform_3.3.indigo/${targetZipFile} for public use targetZip=${tempDir}/${targetZipFile} zip -q -r9 ${targetZip} ${include} du -sh ${targetZip} # generate MD5 sum for zip (file contains only the hash, not the hash + filename) for m in $(md5sum ${targetZip}); do if [[ $m != ${targetZip} ]]; then echo $m > ${targetZip}.MD5; fi; done # generate compositeContent.xml and compositeArtifacts.xml to make this URL a link to /REPO with p2 timestamp=$(date +%s0000) echo " " > ${tempDir}/compositeContent.xml echo " " > ${tempDir}/compositeArtifacts.xml date; rsync -arzq --protocol=28 --rsh=ssh ${tempDir}/* ${DESTINATION}/ rm -fr ${tempDir} popd >/dev/null else echo "sourceFolder ${sourceFolder} not found or not a directory! Must exit!" exit 1; fi