blob: 1a709154d2c923c5d48e7ab7ba69f3e2d26e0a96 [file] [log] [blame]
#Based upon Gef4 publish.sh script
#causes the shell to exit if any subcommand or pipeline returns a non-zero status.
#set -e
# Script may take 5-6 command line parameters:
# $1: Hudson job name: <name>
# $2: Hudson build id: <id>
# $3: Build type: i(ntegration), s(table), r(elease)
# $4: The release label used to label the drop files, e.g. 3.10.0 or 3.10.1
# $5: The eclipse target version, e.g. mars or neon
# $6: Override if exists
# $7: An optional release label suffix to be appended to drop files name, e.g. M1, RC1
##Additional variables to specify for each project
#The root url that enables to find the job with ${hudsonJobRootUrl}/$jobName/$buildId
hudsonJobRootUrl="https://hudson.eclipse.org/papyrus/job/"
#The specific localization
remoteRoot="/home/data/httpd/download.eclipse.org"
remoteUpdateSiteRoot="modeling/mdt/papyrus/components/information.modeling"
remoteRCPDir=${remoteRoot}/${remoteUpdateSiteRoot}/"downloads"
remoteP2Dir=${remoteRoot}/${remoteUpdateSiteRoot}/"updates"
#The localization of the local build target
targetRCPRoot="archive/releng/org.eclipse.papyrus.information.modeling.product/target/products"
targetP2Root="archive/releng/org.eclipse.papyrus.information.modeling.p2/target/repository"
#The rcpPrompote.sh script may be used to publish the RCP build results.
if [ $# -eq 6 -o $# -eq 7 ];
then
jobName=$1
echo "jobName: $jobName"
buildId=$2
echo "buildId: $buildId"
buildType=$3
echo "buildType: $buildType"
releaseLabel=$4
echo "releaseLabel: $releaseLabel"
eclipseTarget=$5
echo "eclipseTarget: $eclipseTarget"
override=$6
echo "override: $override"
if [ -n "$7" ];
then
releaseLabelSuffix=$7
echo "releaseLabelSuffix: $releaseLabelSuffix"
fi
else
echo "Missing so parameters: command jobName buildId buildType releaseLabel eclipseTarget override [releaseLabelSuffix]"
exit 1;
fi
###########jobName parameter###########
if [ -z "$jobName" ];
then
echo "The Hudson job you want to promote must be specified"
exit 1
fi
###########buildId parameter###########
if [ -z "$buildId" ];
then
echo "The id of the $jobName build you want to promote must be specified"
exit 1
fi
###########buildType parameter###########
if [ -z "$buildType" ];
then
echo "The type of build you want to publish to [i(integration), s(table), r(elease)]."
exit;
fi
echo "Publishing as $buildType build"
###########releaseLabel parameter###########
if [ -z "$releaseLabel" ];
then
echo "The release label (e.g. 3.10.0, 3.10.1M2) must be specified."
exit 1
fi
echo "Release label: $releaseLabel"
###########eclipseTarget parameter###########
if [ -z "$eclipseTarget" ];
then
echo "The Eclipse target (e.g. mars, neon) must be specified."
exit 1
fi
echo "Eclipse target : $eclipseTarget"
###########Override parameter###########
if [ "$override" != y -a "$override" != n ];
then
echo "Parameter override has to 'y'(es) or 'n'(o) but was: $override"
exit 0
fi
if [ "$override" == "y" ];
then
echo "Will override the rcp if found"
else
echo "Will not override the rcp if found"
fi
########### Compute localRCPRoot using buildId ###########
if [ "$buildId" = "lastStable" -o "$buildId" = "lastSuccessful" ];
then
# Reverse lookup the build id (in case lastSuccessful or lastStable was used)
for i in $(find ~/.hudson/jobs/$jobName/builds/ -type l)
do
if [ "$(readlink -f $i)" = "$(readlink -f ~/.hudson/jobs/$jobName/$buildId)" ];
then
buildId=${i##*/}
fi
done
echo "Reverse lookup (lastStable/lastSuccessful) yielded buildId: $buildId"
fi
echo "~/.hudson/jobs/${jobName}/builds/${buildId}"
jobDir=$(readlink -f ~/.hudson/jobs/${jobName}/builds/${buildId})
if ! [ -d $jobDir ];
then
echo "The specified buildId does not refer to an existing build: $buildId"
exit 1
fi
localRCPRoot=${jobDir}/${targetRCPRoot}
localP2Root=${jobDir}/${targetP2Root}
echo "localRCPRoot=${localRCPRoot}"
echo "localP2Root=${localP2Root}"
########### Promote RCP ###########
destination=$remoteRCPDir/$eclipseTarget/${releaseLabel}${releaseLabelSuffix}
p2destination=$remoteP2Dir/$eclipseTarget/${releaseLabel}${releaseLabelSuffix}
echo "Destination: $destination"
echo "P2 Destination: ${p2destination}"
if [ "$override" == "n" ];
then
if [ -d $destination ];
then
if [ "$(ls -A ${destination})" ];
then
echo "The destination is not empty. You may consider overriding or archiving"
exit 1
fi
fi
fi
if [ "$override" == "y" ];
then
if [ -d $destination ];
then
echo "Overriding the RCP by cleaning the $destination folder"
rm -rf ${destination}/*
fi
fi
cd $localRCPRoot
tmpdir=$localRCPRoot/tmp
#Clean if already exists
rm -rf $tmpdir
mkdir $tmpdir
for f in *win*; do
echo "Prepare $f"
if [[ $f == *64* ]]; then
bitness=64
else
bitness=32
fi
cp $f $tmpdir/$f
md5sum $tmpdir/$f > $tmpdir/$f".md5"
done
for f in *linux*; do
echo "Prepare $f"
if [[ $f == *64* ]]; then
bitness=64
else
bitness=32
fi
cp $f $tmpdir/$f
md5sum $tmpdir/$f > $tmpdir/$f".md5"
done
for f in *mac*; do
echo "Prepare $f"
if [[ $f == *64* ]]; then
bitness=64
else
bitness=32
fi
cp $f $tmpdir/$f
md5sum $tmpdir/$f > $tmpdir/$f".md5"
done
mkdir -p $destination
echo "Promoting the RCPs to $destination"
mv $tmpdir/* $destination
mkdir -p $p2destination
cp -r $localP2Root/* $p2destination
# Clean up
echo "Cleaning up"
rm -rf $tmpdir