| #!/bin/bash -x |
| |
| #-------------------------------------------------------------------------------- |
| # Copyright (c) 2012 CEA LIST. |
| # |
| # |
| # All rights reserved. This program and the accompanying materials |
| # are made available under the terms of the Eclipse Public License v1.0 |
| # which accompanies this distribution, and is available at |
| # http://www.eclipse.org/legal/epl-v10.html |
| # |
| # Contributors: |
| # Nicolas Bros (Mia-Software) |
| #-------------------------------------------------------------------------------- |
| |
| # This script compares the date of a signal file touched by the hudson build |
| # with the date of a reference file touched at the end of each promote. |
| # It then promotes the result of the build. The promote is not done from |
| # Hudson because it does not have the necessary rights. |
| |
| # exit on error |
| set -o errexit |
| # error when using an unset variable |
| set -o nounset |
| |
| ### TRUNK ### |
| |
| LAST_PROMOTE_FILE_TRUNK_NIGHTLY=/opt/public/modeling/mdt/papyrus/papyrus-trunk-nightly/lastPromoteRef |
| PROMOTE_SIGNAL_TRUNK_NIGHTLY=/opt/public/modeling/mdt/papyrus/papyrus-trunk-nightly/promoteSignal |
| PROMOTE_VERSION_TRUNK_NIGHTLY=/opt/public/modeling/mdt/papyrus/papyrus-trunk-nightly/promoteVersion |
| |
| LAST_PROMOTE_FILE_TRUNK_EXTRA_NIGHTLY=/opt/public/modeling/mdt/papyrus/papyrus-trunk-extra-nightly/lastPromoteRef |
| PROMOTE_SIGNAL_TRUNK_EXTRA_NIGHTLY=/opt/public/modeling/mdt/papyrus/papyrus-trunk-extra-nightly/promoteSignal |
| PROMOTE_VERSION_TRUNK_EXTRA_NIGHTLY=/opt/public/modeling/mdt/papyrus/papyrus-trunk-extra-nightly/promoteVersion |
| |
| LAST_PROMOTE_FILE_TRUNK_NIGHTLY_TESTS=/opt/public/modeling/mdt/papyrus/papyrus-trunk-nightly-tests/lastPromoteRef |
| PROMOTE_SIGNAL_TRUNK_NIGHTLY_TESTS=/opt/public/modeling/mdt/papyrus/papyrus-trunk-nightly-tests/promoteSignal |
| PROMOTE_VERSION_TRUNK_NIGHTLY_TESTS=/opt/public/modeling/mdt/papyrus/papyrus-trunk-nightly-tests/promoteVersion |
| |
| ### MAINTENANCE 0.10 ### |
| |
| LAST_PROMOTE_FILE_0_10_MAINTENANCE_NIGHTLY=/opt/public/modeling/mdt/papyrus/papyrus-0.10-maintenance-nightly/lastPromoteRef |
| PROMOTE_SIGNAL_0_10_MAINTENANCE_NIGHTLY=/opt/public/modeling/mdt/papyrus/papyrus-0.10-maintenance-nightly/promoteSignal |
| PROMOTE_VERSION_0_10_MAINTENANCE_NIGHTLY=/opt/public/modeling/mdt/papyrus/papyrus-0.10-maintenance-nightly/promoteVersion |
| |
| LAST_PROMOTE_FILE_0_10_MAINTENANCE_EXTRA_NIGHTLY=/opt/public/modeling/mdt/papyrus/papyrus-0.10-maintenance-extra-nightly/lastPromoteRef |
| PROMOTE_SIGNAL_0_10_MAINTENANCE_EXTRA_NIGHTLY=/opt/public/modeling/mdt/papyrus/papyrus-0.10-maintenance-extra-nightly/promoteSignal |
| PROMOTE_VERSION_0_10_MAINTENANCE_EXTRA_NIGHTLY=/opt/public/modeling/mdt/papyrus/papyrus-0.10-maintenance-extra-nightly/promoteVersion |
| |
| LAST_PROMOTE_FILE_0_10_MAINTENANCE_NIGHTLY_TESTS=/opt/public/modeling/mdt/papyrus/papyrus-0.10-maintenance-nightly-tests/lastPromoteRef |
| PROMOTE_SIGNAL_0_10_MAINTENANCE_NIGHTLY_TESTS=/opt/public/modeling/mdt/papyrus/papyrus-0.10-maintenance-nightly-tests/promoteSignal |
| PROMOTE_VERSION_0_10_MAINTENANCE_NIGHTLY_TESTS=/opt/public/modeling/mdt/papyrus/papyrus-0.10-maintenance-nightly-tests/promoteVersion |
| |
| ### Update Sites ### |
| |
| UPDATES_TRUNK_NIGHTLY=/home/data/httpd/download.eclipse.org/modeling/mdt/papyrus/updates/nightly/luna/main |
| UPDATES_TRUNK_EXTRA_NIGHTLY=/home/data/httpd/download.eclipse.org/modeling/mdt/papyrus/updates/nightly/luna/extra |
| UPDATES_0_10_MAINTENANCE_NIGHTLY=/home/data/httpd/download.eclipse.org/modeling/mdt/papyrus/updates/nightly/kepler/main |
| UPDATES_0_10_MAINTENANCE_EXTRA_NIGHTLY=/home/data/httpd/download.eclipse.org/modeling/mdt/papyrus/updates/nightly/kepler/extra |
| |
| DROPS_DIR=/home/data/httpd/download.eclipse.org/modeling/mdt/papyrus/downloads/drops |
| |
| ARCHIVE_DIR=/home/data/httpd/archive.eclipse.org/modeling/mdt/papyrus/downloads/drops |
| ARCHIVE_INDEX=/home/data/httpd/archive.eclipse.org/modeling/mdt/papyrus/downloads/index.html |
| |
| # constants required by promoteFunctions.sh |
| # export ADD_DOWNLOAD_STATS=/opt/public/modeling/mdt/papyrus/addDownloadStats.sh |
| |
| # wait for up to 15 minutes for Hudson to finish (archive the result) |
| JOB_FINISH_WAIT_TIMEOUT=900 |
| |
| # include promote functions |
| source $(dirname $0)/promoteFunctions.sh |
| |
| DATE=$(date +%Y%m%d-%H%M) |
| |
| echo "[$DATE] starting cronPromote.sh --------------------------------------------------" |
| |
| ### TRUNK ### |
| |
| if [ ! -e $LAST_PROMOTE_FILE_TRUNK_NIGHTLY ]; then touch $LAST_PROMOTE_FILE_TRUNK_NIGHTLY; fi |
| if [ ! -e $LAST_PROMOTE_FILE_TRUNK_EXTRA_NIGHTLY ]; then touch $LAST_PROMOTE_FILE_TRUNK_EXTRA_NIGHTLY; fi |
| if [ ! -e $LAST_PROMOTE_FILE_TRUNK_NIGHTLY_TESTS ]; then touch $LAST_PROMOTE_FILE_TRUNK_NIGHTLY_TESTS; fi |
| |
| ### MAINTENANCE 0.10 ### |
| |
| if [ ! -e $LAST_PROMOTE_FILE_0_10_MAINTENANCE_NIGHTLY ]; then touch $LAST_PROMOTE_FILE_0_10_MAINTENANCE_NIGHTLY; fi |
| if [ ! -e $LAST_PROMOTE_FILE_0_10_MAINTENANCE_EXTRA_NIGHTLY ]; then touch $LAST_PROMOTE_FILE_0_10_MAINTENANCE_EXTRA_NIGHTLY; fi |
| if [ ! -e $LAST_PROMOTE_FILE_0_10_MAINTENANCE_NIGHTLY_TESTS ]; then touch $LAST_PROMOTE_FILE_0_10_MAINTENANCE_NIGHTLY_TESTS; fi |
| |
| ### |
| |
| if [ ! -e $PROMOTE_SIGNAL_TRUNK_NIGHTLY ]; then echo "$DATE: ERROR: $PROMOTE_SIGNAL_TRUNK_NIGHTLY not found"; exit 1; fi |
| if [ ! -e $PROMOTE_SIGNAL_TRUNK_EXTRA_NIGHTLY ]; then echo "$DATE: ERROR: $PROMOTE_SIGNAL_TRUNK_EXTRA_NIGHTLY not found"; exit 1; fi |
| if [ ! -e $PROMOTE_SIGNAL_TRUNK_NIGHTLY_TESTS ]; then echo "$DATE: ERROR: $PROMOTE_SIGNAL_TRUNK_NIGHTLY_TESTS not found"; exit 1; fi |
| |
| if [ ! -e $PROMOTE_SIGNAL_0_10_MAINTENANCE_NIGHTLY ]; then echo "$DATE: ERROR: $PROMOTE_SIGNAL_0_10_MAINTENANCE_NIGHTLY not found"; exit 1; fi |
| if [ ! -e $PROMOTE_SIGNAL_0_10_MAINTENANCE_EXTRA_NIGHTLY ]; then echo "$DATE: ERROR: $PROMOTE_SIGNAL_0_10_MAINTENANCE_EXTRA_NIGHTLY not found"; exit 1; fi |
| if [ ! -e $PROMOTE_SIGNAL_0_10_MAINTENANCE_NIGHTLY_TESTS ]; then echo "$DATE: ERROR: $PROMOTE_SIGNAL_0_10_MAINTENANCE_NIGHTLY_TESTS not found"; exit 1; fi |
| |
| ### |
| |
| signalDateTrunkNightly=$(stat --format=%Y $PROMOTE_SIGNAL_TRUNK_NIGHTLY) |
| signalDateTrunkExtraNightly=$(stat --format=%Y $PROMOTE_SIGNAL_TRUNK_EXTRA_NIGHTLY) |
| signalDateTrunkNightlyTests=$(stat --format=%Y $PROMOTE_SIGNAL_TRUNK_NIGHTLY_TESTS) |
| |
| signalDate10MaintenanceNightly=$(stat --format=%Y $PROMOTE_SIGNAL_0_10_MAINTENANCE_NIGHTLY) |
| signalDate10MaintenanceExtraNightly=$(stat --format=%Y $PROMOTE_SIGNAL_0_10_MAINTENANCE_EXTRA_NIGHTLY) |
| signalDate10MaintenanceNightlyTests=$(stat --format=%Y $PROMOTE_SIGNAL_0_10_MAINTENANCE_NIGHTLY_TESTS) |
| |
| ### |
| |
| lastPromoteDateTrunkNightly=$(stat --format=%Y $LAST_PROMOTE_FILE_TRUNK_NIGHTLY) |
| lastPromoteDateTrunkExtraNightly=$(stat --format=%Y $LAST_PROMOTE_FILE_TRUNK_EXTRA_NIGHTLY) |
| lastPromoteDateTrunkNightlyTests=$(stat --format=%Y $LAST_PROMOTE_FILE_TRUNK_NIGHTLY_TESTS) |
| |
| lastPromoteDate10MaintenanceNightly=$(stat --format=%Y $LAST_PROMOTE_FILE_0_10_MAINTENANCE_NIGHTLY) |
| lastPromoteDate10MaintenanceExtraNightly=$(stat --format=%Y $LAST_PROMOTE_FILE_0_10_MAINTENANCE_EXTRA_NIGHTLY) |
| lastPromoteDate10MaintenanceNightlyTests=$(stat --format=%Y $LAST_PROMOTE_FILE_0_10_MAINTENANCE_NIGHTLY_TESTS) |
| |
| ########## trunk main nightly ########## |
| if [ $signalDateTrunkNightly -gt $lastPromoteDateTrunkNightly ]; then |
| # mark the promote as done |
| touch "$LAST_PROMOTE_FILE_TRUNK_NIGHTLY" |
| |
| waitUntilJobIsFinished "papyrus-trunk-nightly" "$JOB_FINISH_WAIT_TIMEOUT" |
| |
| # the Hudson job wrote these build name and version to publish |
| buildName=$(cat "$PROMOTE_SIGNAL_TRUNK_NIGHTLY") |
| version=$(cat "$PROMOTE_VERSION_TRUNK_NIGHTLY") |
| zipName="Papyrus-Main.zip" |
| |
| echo "[$DATE] deleting previous nightly update site" |
| rm -rf "$UPDATES_TRUNK_NIGHTLY" |
| |
| buildsDir="$DROPS_DIR/$version" |
| echo "[$DATE] pruning old builds" |
| prune N "$buildsDir" 2 |
| |
| nfsURL="/shared/jobs/papyrus-trunk-nightly/lastSuccessful/archive/" |
| hudsonURL="https://hudson.eclipse.org/hudson/job/papyrus-trunk-nightly/lastSuccessfulBuild/artifact/" |
| export SVN_DIRECTORIES_TO_TAG=( ) |
| promote "$zipName" "$version" "$nfsURL" "$hudsonURL" "$DROPS_DIR" "$ARCHIVE_DIR" "$ARCHIVE_INDEX" "$UPDATES_TRUNK_NIGHTLY" "Papyrus-Update-incubation-" "NA" |
| |
| echo "[$DATE] promote done" |
| |
| # trigger the tests and extras builds by using the Hudson Rest API |
| # see http://wiki.hudson-ci.org/display/HUDSON/Remote+access+API |
| |
| echo "[$DATE] triggering Hudson tests build" |
| json='{"parameter": [ |
| {"name": "BUCKMINSTER_LOGLEVEL", "value": "DEBUG"}, |
| {"name": "CLEAN_TP", "value": "true"}, |
| {"name": "CLEAN_WORKSPACE", "value": "true"}, |
| {"name": "CLEAN_OUTPUT", "value": "true"}, |
| {"name": "CLEAN_TOOLS", "value": "false"}, |
| {"name": "BUILD_TARGET", "value": "test"}, |
| {"name": "BUILD_TYPE", "value": "N"} |
| ], "": ""}' |
| curl -X POST https://hudson.eclipse.org/hudson/job/papyrus-trunk-nightly-tests/build -d token=token --data-urlencode json="$json" | grep --ignore-case error && exit -1 |
| |
| echo "[$DATE] triggering Hudson extras build" |
| json='{"parameter": [ |
| {"name": "BUCKMINSTER_LOGLEVEL", "value": "DEBUG"}, |
| {"name": "CLEAN_TP", "value": "true"}, |
| {"name": "CLEAN_WORKSPACE", "value": "true"}, |
| {"name": "CLEAN_OUTPUT", "value": "true"}, |
| {"name": "CLEAN_TOOLS", "value": "false"}, |
| {"name": "BUILD_TYPE", "value": "N"}, |
| {"name": "SITE_PACK200", "value": "true"}, |
| {"name": "BUILD_TARGET", "value": "site.p2"}, |
| {"name": "JAVA_HOME", "value": "/shared/common/sun-jdk1.6.0_21_x64"}, |
| {"name": "SIGN_UPDATE_SITE", "value": "false"} |
| ], "": ""}' |
| curl -X POST https://hudson.eclipse.org/hudson/job/papyrus-trunk-extra-nightly/build -d token=token --data-urlencode json="$json" | grep --ignore-case error && exit -1 |
| fi |
| |
| ########## trunk main nightly tests ########## |
| if [ $signalDateTrunkNightlyTests -gt $lastPromoteDateTrunkNightlyTests ]; then |
| # mark the promote as done |
| touch "$LAST_PROMOTE_FILE_TRUNK_NIGHTLY_TESTS" |
| |
| waitUntilJobIsFinished "papyrus-trunk-nightly-tests" "$JOB_FINISH_WAIT_TIMEOUT" |
| |
| dirBefore=$(pwd) |
| echo "[$DATE] creating working dir" |
| workingDir=$(mktemp -d) |
| cd "$workingDir" |
| |
| # for the tests build, the build name and version are taken from the last main build since the artifacts |
| # must go to the same folder, and we want to be able to start several extra jobs after one single main job |
| |
| buildName=$(cat "$PROMOTE_SIGNAL_TRUNK_NIGHTLY") |
| version=$(cat "$PROMOTE_VERSION_TRUNK_NIGHTLY") |
| zipName="Papyrus-TestResults.zip" |
| nfsURL="/shared/jobs/papyrus-trunk-nightly-tests/lastSuccessful/archive/" |
| hudsonURL="https://hudson.eclipse.org/hudson/job/papyrus-trunk-nightly-tests/lastSuccessfulBuild/artifact/" |
| |
| cp "$nfsURL/${zipName}" . || wget --no-check-certificate "$hudsonURL/${zipName}" |
| if [ ! -f "$zipName" ]; then echo "ERROR: $zipName (from Hudson) not found"; exit -2; fi |
| echo "[$DATE] Testing zip integrity" |
| unzip -t "$zipName" |
| buildsDir="$DROPS_DIR/$version/$buildName" |
| echo "[$DATE] publishing build (version='$version') to the builds directory '$buildsDir'..." |
| unzip -o "$zipName" -d "$buildsDir" |
| echo "[$DATE] setting access rights" |
| setAccessRights "$buildsDir" |
| |
| echo "[$DATE] promote done" |
| |
| cd ${dirBefore} |
| echo "[$DATE] deleting working dir" |
| rm -rf "$workingDir" |
| |
| # TODO: re-enable when the job is implemented |
| # echo "[$DATE] triggering Hudson tests build" |
| # curl https://hudson.eclipse.org/hudson/job/papyrus-trunk-extra-nightly-tests/buildWithParameters?token=token |
| fi |
| |
| ########## trunk extras nightly ########## |
| if [ $signalDateTrunkExtraNightly -gt $lastPromoteDateTrunkExtraNightly ]; then |
| # mark the promote as done |
| touch "$LAST_PROMOTE_FILE_TRUNK_EXTRA_NIGHTLY" |
| |
| waitUntilJobIsFinished "papyrus-trunk-extra-nightly" "$JOB_FINISH_WAIT_TIMEOUT" |
| |
| dirBefore=$(pwd) |
| echo "[$DATE] creating working dir" |
| workingDir=$(mktemp -d) |
| cd "$workingDir" |
| |
| # for the extra build, the build name and version are taken from the last main build since the artifacts |
| # must go to the same folder, and we want to be able to start several extra jobs after one single main job |
| |
| buildName=$(cat "$PROMOTE_SIGNAL_TRUNK_NIGHTLY") |
| version=$(cat "$PROMOTE_VERSION_TRUNK_NIGHTLY") |
| zipName="Papyrus-Extra.zip" |
| updateZipName="Papyrus-Extra-Update.zip" |
| nfsURL="/shared/jobs/papyrus-trunk-extra-nightly/lastSuccessful/archive/" |
| hudsonURL="https://hudson.eclipse.org/hudson/job/papyrus-trunk-extra-nightly/lastSuccessfulBuild/artifact/" |
| |
| # publish to existing drops folder |
| cp "$nfsURL/${zipName}" . || wget --no-check-certificate "$hudsonURL/${zipName}" |
| if [ ! -f "$zipName" ]; then echo "ERROR: $zipName (from Hudson) not found"; exit -2; fi |
| echo "[$DATE] Testing zip integrity" |
| unzip -t "$zipName" |
| buildsDir="$DROPS_DIR/$version/$buildName" |
| echo "[$DATE] publishing build (version='$version') to the builds directory '$buildsDir'..." |
| unzip -o "$zipName" -d "$buildsDir" |
| |
| # publish to composite update site |
| tmpDrop=$(mktemp -d) |
| unzip "$zipName" -d "$tmpDrop" |
| dirNameInZip=$(ls -1 "$tmpDrop") |
| [ $(echo "$dirNameInZip" | wc -l) == 1 ] || { echo "one directory expected in zip"; exit 1; } |
| rm -rf "$UPDATES_TRUNK_EXTRA_NIGHTLY" |
| unzip -o "$tmpDrop/$dirNameInZip/${updateZipName}" -d "$UPDATES_TRUNK_EXTRA_NIGHTLY" |
| |
| echo "[$DATE] setting access rights" |
| setAccessRights "$buildsDir" |
| setAccessRights "$UPDATES_TRUNK_EXTRA_NIGHTLY" |
| |
| echo "[$DATE] promote done" |
| |
| cd ${dirBefore} |
| echo "[$DATE] deleting working dir" |
| rm -rf "$workingDir" |
| rm -rf "$tmpDrop" |
| |
| # trigger the extras tests build by using the Hudson Rest API |
| # see http://wiki.hudson-ci.org/display/HUDSON/Remote+access+API |
| |
| echo "[$DATE] triggering Hudson extras tests build" |
| json='{"parameter": [ |
| {"name": "BUCKMINSTER_LOGLEVEL", "value": "DEBUG"}, |
| {"name": "CLEAN_TP", "value": "true"}, |
| {"name": "CLEAN_WORKSPACE", "value": "true"}, |
| {"name": "CLEAN_OUTPUT", "value": "true"}, |
| {"name": "CLEAN_TOOLS", "value": "false"}, |
| {"name": "BUILD_TYPE", "value": "N"}, |
| {"name": "BUILD_TARGET", "value": "test"} |
| ], "": ""}' |
| curl -X POST https://hudson.eclipse.org/hudson/job/papyrus-trunk-extra-nightly-tests/build -d token=token --data-urlencode json="$json" | grep --ignore-case error && exit -1 |
| fi |
| |
| ########## maintenance main 0.10 nightly ########## |
| if [ $signalDate10MaintenanceNightly -gt $lastPromoteDate10MaintenanceNightly ]; then |
| # mark the promote as done |
| touch "$LAST_PROMOTE_FILE_0_10_MAINTENANCE_NIGHTLY" |
| |
| waitUntilJobIsFinished "papyrus-0.10-maintenance-nightly" "$JOB_FINISH_WAIT_TIMEOUT" |
| |
| # the Hudson job wrote these build name and version to publish |
| buildName=$(cat "$PROMOTE_SIGNAL_0_10_MAINTENANCE_NIGHTLY") |
| version=$(cat "$PROMOTE_VERSION_0_10_MAINTENANCE_NIGHTLY") |
| zipName="Papyrus-Main.zip" |
| |
| echo "[$DATE] deleting previous nightly update site" |
| rm -rf "$UPDATES_0_10_MAINTENANCE_NIGHTLY" |
| |
| buildsDir="$DROPS_DIR/$version" |
| echo "[$DATE] pruning old builds" |
| prune N "$buildsDir" 2 |
| |
| nfsURL="/shared/jobs/papyrus-0.10-maintenance-nightly/lastSuccessful/archive/" |
| hudsonURL="https://hudson.eclipse.org/hudson/job/papyrus-0.10-maintenance-nightly/lastSuccessfulBuild/artifact/" |
| export SVN_DIRECTORIES_TO_TAG=( ) |
| promote "$zipName" "$version" "$nfsURL" "$hudsonURL" "$DROPS_DIR" "$ARCHIVE_DIR" "$ARCHIVE_INDEX" "$UPDATES_0_10_MAINTENANCE_NIGHTLY" "Papyrus-Update-incubation-" "NA" |
| |
| echo "[$DATE] promote done" |
| |
| # trigger the tests and extras builds by using the Hudson Rest API |
| # see http://wiki.hudson-ci.org/display/HUDSON/Remote+access+API |
| |
| echo "[$DATE] triggering Hudson tests build" |
| json='{"parameter": [ |
| {"name": "BUCKMINSTER_LOGLEVEL", "value": "DEBUG"}, |
| {"name": "CLEAN_TP", "value": "true"}, |
| {"name": "CLEAN_WORKSPACE", "value": "true"}, |
| {"name": "CLEAN_OUTPUT", "value": "true"}, |
| {"name": "CLEAN_TOOLS", "value": "false"}, |
| {"name": "BUILD_TARGET", "value": "test"}, |
| {"name": "BUILD_TYPE", "value": "N"} |
| ], "": ""}' |
| curl -X POST https://hudson.eclipse.org/hudson/job/papyrus-0.10-maintenance-nightly-tests/build -d token=token --data-urlencode json="$json" | grep --ignore-case error && exit -1 |
| |
| echo "[$DATE] triggering Hudson extras build" |
| json='{"parameter": [ |
| {"name": "BUCKMINSTER_LOGLEVEL", "value": "DEBUG"}, |
| {"name": "CLEAN_TP", "value": "true"}, |
| {"name": "CLEAN_WORKSPACE", "value": "true"}, |
| {"name": "CLEAN_OUTPUT", "value": "true"}, |
| {"name": "CLEAN_TOOLS", "value": "false"}, |
| {"name": "BUILD_TYPE", "value": "N"}, |
| {"name": "SITE_PACK200", "value": "true"}, |
| {"name": "BUILD_TARGET", "value": "site.p2"}, |
| {"name": "JAVA_HOME", "value": "/shared/common/sun-jdk1.6.0_21_x64"}, |
| {"name": "SIGN_UPDATE_SITE", "value": "false"} |
| ], "": ""}' |
| curl -X POST https://hudson.eclipse.org/hudson/job/papyrus-0.10-maintenance-extra-nightly/build -d token=token --data-urlencode json="$json" | grep --ignore-case error && exit -1 |
| fi |
| |
| ########## maintenance 0.10 main nightly tests ########## |
| if [ $signalDate10MaintenanceNightlyTests -gt $lastPromoteDate10MaintenanceNightlyTests ]; then |
| # mark the promote as done |
| touch "$LAST_PROMOTE_FILE_0_10_MAINTENANCE_NIGHTLY_TESTS" |
| |
| waitUntilJobIsFinished "papyrus-0.10-maintenance-nightly-tests" "$JOB_FINISH_WAIT_TIMEOUT" |
| |
| dirBefore=$(pwd) |
| echo "[$DATE] creating working dir" |
| workingDir=$(mktemp -d) |
| cd "$workingDir" |
| |
| # for the tests build, the build name and version are taken from the last main build since the artifacts |
| # must go to the same folder, and we want to be able to start several extra jobs after one single main job |
| |
| buildName=$(cat "$PROMOTE_SIGNAL_0_10_MAINTENANCE_NIGHTLY") |
| version=$(cat "$PROMOTE_VERSION_0_10_MAINTENANCE_NIGHTLY") |
| zipName="Papyrus-TestResults.zip" |
| nfsURL="/shared/jobs/papyrus-0.10-maintenance-nightly-tests/lastSuccessful/archive/" |
| hudsonURL="https://hudson.eclipse.org/hudson/job/papyrus-0.10-maintenance-nightly-tests/lastSuccessfulBuild/artifact/" |
| |
| cp "$nfsURL/${zipName}" . || wget --no-check-certificate "$hudsonURL/${zipName}" |
| if [ ! -f "$zipName" ]; then echo "ERROR: $zipName (from Hudson) not found"; exit -2; fi |
| echo "[$DATE] Testing zip integrity" |
| unzip -t "$zipName" |
| buildsDir="$DROPS_DIR/$version/$buildName" |
| echo "[$DATE] publishing build (version='$version') to the builds directory '$buildsDir'..." |
| unzip -o "$zipName" -d "$buildsDir" |
| echo "[$DATE] setting access rights" |
| setAccessRights "$buildsDir" |
| |
| echo "[$DATE] promote done" |
| |
| cd ${dirBefore} |
| echo "[$DATE] deleting working dir" |
| rm -rf "$workingDir" |
| |
| # TODO: re-enable when the job is implemented |
| # echo "[$DATE] triggering Hudson tests build" |
| # curl https://hudson.eclipse.org/hudson/job/papyrus-0.10-maintenance-extra-nightly-tests/buildWithParameters?token=token |
| fi |
| |
| ########## maintenance 0.10 extras nightly ########## |
| if [ $signalDate10MaintenanceExtraNightly -gt $lastPromoteDate10MaintenanceExtraNightly ]; then |
| # mark the promote as done |
| touch "$LAST_PROMOTE_FILE_0_10_MAINTENANCE_EXTRA_NIGHTLY" |
| |
| waitUntilJobIsFinished "papyrus-0.10-maintenance-extra-nightly" "$JOB_FINISH_WAIT_TIMEOUT" |
| |
| dirBefore=$(pwd) |
| echo "[$DATE] creating working dir" |
| workingDir=$(mktemp -d) |
| cd "$workingDir" |
| |
| # for the extra build, the build name and version are taken from the last main build since the artifacts |
| # must go to the same folder, and we want to be able to start several extra jobs after one single main job |
| |
| buildName=$(cat "$PROMOTE_SIGNAL_0_10_MAINTENANCE_NIGHTLY") |
| version=$(cat "$PROMOTE_VERSION_0_10_MAINTENANCE_NIGHTLY") |
| zipName="Papyrus-Extra.zip" |
| updateZipName="Papyrus-Extra-Update.zip" |
| nfsURL="/shared/jobs/papyrus-0.10-maintenance-extra-nightly/lastSuccessful/archive/" |
| hudsonURL="https://hudson.eclipse.org/hudson/job/papyrus-0.10-maintenance-extra-nightly/lastSuccessfulBuild/artifact/" |
| |
| # publish to existing drops folder |
| cp "$nfsURL/${zipName}" . || wget --no-check-certificate "$hudsonURL/${zipName}" |
| if [ ! -f "$zipName" ]; then echo "ERROR: $zipName (from Hudson) not found"; exit -2; fi |
| echo "[$DATE] Testing zip integrity" |
| unzip -t "$zipName" |
| buildsDir="$DROPS_DIR/$version/$buildName" |
| echo "[$DATE] publishing build (version='$version') to the builds directory '$buildsDir'..." |
| unzip -o "$zipName" -d "$buildsDir" |
| |
| # publish to composite update site |
| tmpDrop=$(mktemp -d) |
| unzip "$zipName" -d "$tmpDrop" |
| dirNameInZip=$(ls -1 "$tmpDrop") |
| [ $(echo "$dirNameInZip" | wc -l) == 1 ] || { echo "one directory expected in zip"; exit 1; } |
| rm -rf "$UPDATES_0_10_MAINTENANCE_EXTRA_NIGHTLY" |
| unzip -o "$tmpDrop/$dirNameInZip/${updateZipName}" -d "$UPDATES_0_10_MAINTENANCE_EXTRA_NIGHTLY" |
| |
| echo "[$DATE] setting access rights" |
| setAccessRights "$buildsDir" |
| setAccessRights "$UPDATES_0_10_MAINTENANCE_EXTRA_NIGHTLY" |
| |
| echo "[$DATE] promote done" |
| |
| cd ${dirBefore} |
| echo "[$DATE] deleting working dir" |
| rm -rf "$workingDir" |
| rm -rf "$tmpDrop" |
| |
| # trigger the extras tests build by using the Hudson Rest API |
| # see http://wiki.hudson-ci.org/display/HUDSON/Remote+access+API |
| |
| echo "[$DATE] triggering Hudson extras tests build" |
| json='{"parameter": [ |
| {"name": "BUCKMINSTER_LOGLEVEL", "value": "DEBUG"}, |
| {"name": "CLEAN_TP", "value": "true"}, |
| {"name": "CLEAN_WORKSPACE", "value": "true"}, |
| {"name": "CLEAN_OUTPUT", "value": "true"}, |
| {"name": "CLEAN_TOOLS", "value": "false"}, |
| {"name": "BUILD_TYPE", "value": "N"}, |
| {"name": "BUILD_TARGET", "value": "test"} |
| ], "": ""}' |
| curl -X POST https://hudson.eclipse.org/hudson/job/papyrus-0.10-maintenance-extra-nightly-tests/build -d token=token --data-urlencode json="$json" | grep --ignore-case error && exit -1 |
| fi |