change publish nightly to udpate the latest in a smartest way (by comparing the repository and the filesystem if the latest is still the same)
diff --git a/hudson-scripts/init/2_fun_updateLatestRepository.sh b/hudson-scripts/init/2_fun_updateLatestRepository.sh
new file mode 100644
index 0000000..aa31ba1
--- /dev/null
+++ b/hudson-scripts/init/2_fun_updateLatestRepository.sh
@@ -0,0 +1,55 @@
+#!/bin/sh
+# ====================================================================
+# Copyright (c) 2014 Obeo
+# 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:
+# Obeo - initial API and implementation
+# ====================================================================
+
+updateLatest() {
+ local latestPath=$1
+ local prefix=$2
+ local relpath=$3
+ local latestRepoName=$4
+
+ local currentPwd=$(pwd)
+ cd ${UPDATE_NIGHTLY_HOME}
+ local allFilesWithPrefix=( $(echo "${prefix}"* | tr ' ' '\n' | grep -E '[0-9]+\.[0-9]+\.[0-9]+.*' || true) )
+ cd ${currentPwd}
+
+ if [ ${#allFilesWithPrefix[@]} -gt 0 ]; then
+ local latestUpdatePath=$( echo ${allFilesWithPrefix[@]} | tr ' ' '\n' | sort | tail -n 1 )
+ if [ ! -z "${latestUpdatePath}" ]; then
+ local latestUpdateSite_onDisk="file:${UPDATE_NIGHTLY_HOME}/${latestUpdatePath}"
+ LSDEBUG "Latest update site on disk is '${latestUpdateSite_onDisk}'"
+ if [ -d "${latestPath}" ]; then
+ local latestUpdateSite_inRepo=( $(composite-repository -location "${latestPath}" -list) )
+ if [ ${#latestUpdateSite_inRepo[@]} -gt 0 ]; then
+ LSDEBUG "Latest update site in '${latestPath}' is '${latestUpdateSite_inRepo[0]}'"
+ if [ "${latestUpdateSite_inRepo[0]}" != "${latestUpdateSite_onDisk}" ]; then
+ LSINFO "Creating redirection from '${latestPath}' to '${latestUpdatePath}'"
+ createRedirect "${latestPath}" "${relpath}/${latestUpdatePath}" "${latestRepoName}"
+ else
+ LSINFO "'${latestPath}' is already referencing the latest update site. Do nothing"
+ fi
+ else
+ LSDEBUG "Latest update site in '${latestPath}' is empty"
+ LSINFO "Creating redirection from '${latestPath}' to '${latestUpdatePath}'"
+ createRedirect "${latestPath}" "${relpath}/${latestUpdatePath}" "${latestRepoName}"
+ fi
+ else # folder nightly/latest does not exist
+ LSDEBUG "Folder '${latestPath}' does not exist, it will be created"
+ LSINFO "Creating redirection from '${latestPath}' to '${latestUpdatePath}'"
+ createRedirect "${latestPath}" "${relpath}/${latestUpdatePath}" "${latestRepoName}"
+ fi
+ else
+ LSERROR "Some files seems to be update site starting with '${prefix}' but we could not tail the list"
+ fi
+ else
+ LSDEBUG "There is no folder that seem to be an update site in '${UPDATE_NIGHTLY_HOME}'. No one have a name that start with '${prefix}' and that match the regex '[0-9]+\.[0-9]+\.[0-9]+.*'"
+ fi
+}
\ No newline at end of file
diff --git a/hudson-scripts/publish-nightly.sh b/hudson-scripts/publish-nightly.sh
index ee062f5..f048e1a 100755
--- a/hudson-scripts/publish-nightly.sh
+++ b/hudson-scripts/publish-nightly.sh
@@ -10,13 +10,12 @@
# Obeo - initial API and implementation
# ====================================================================
-[ -z "${GIT_BRANCH}" -o -z "${UPDATE_SITE__ARTIFACT_URL}" -o -z "${UPDATE_SITE__ARTIFACT_NAME}" -o -z "${UPDATE_SITE__UNQUALIFIED_VERSION}" -o -z "${UPDATE_SITE__QUALIFIED_VERSION}" ] && {
+[ -z "${UPDATE_SITE__ARTIFACT_URL}" -o -z "${UPDATE_SITE__ARTIFACT_NAME}" -o -z "${UPDATE_SITE__UNQUALIFIED_VERSION}" -o -z "${UPDATE_SITE__QUALIFIED_VERSION}" ] && {
echo "Execution aborted.
One or more of the required variables is not set. They are normally
provided by the Hudson build.
-- GIT_BRANCH: the git branch that has been build.
- UPDATE_SITE__ARTIFACT_URL: the URL where the zipped update site to publish can be donwload.
- UPDATE_SITE__ARTIFACT_NAME: the filename of the zipped update site.
- UPDATE_SITE__UNQUALIFIED_VERSION: the unqualified version of the update site to publish.
@@ -27,63 +26,67 @@
source "$(dirname "${0}")/init.sh"
-LSINFO "Publishing nightly build (${UPDATE_SITE__QUALIFIED_VERSION}) of ${PROJECT_NAME}"
+LSINFO "== Publishing nightly build '${PROJECT_NAME} ${UPDATE_SITE__QUALIFIED_VERSION}' == "
# the update site
-for zip in *.zip;
-do
+for zip in *".zip"; do
LSDEBUG "Removing previous zipped update site '${zip}'"
rm -f ${zip}
done
+for folder in "${UPDATE_SITE__UNQUALIFIED_VERSION}"*; do
+ LSDEBUG "Removing previous update site folder '${folder}'"
+ rm -rf ${folder}
+done
+
LSINFO "Downloading '${UPDATE_SITE__ARTIFACT_URL}'"
wget -q --no-check-certificate ${UPDATE_SITE__ARTIFACT_URL} -O - > ${UPDATE_SITE__ARTIFACT_NAME}
STREAM="$(echo ${UPDATE_SITE__UNQUALIFIED_VERSION} | sed-regex 's/^([0-9]+\.[0-9]+)\.[0-9]+$/\1/').x"
LSDEBUG "Stream name is '${STREAM}'"
-if [ -d ${UPDATE_SITE__QUALIFIED_VERSION} ];then
- LSDEBUG "Removing folder '${UPDATE_SITE__QUALIFIED_VERSION}'"
+if [ -d "${UPDATE_SITE__QUALIFIED_VERSION}" ];then
+ LSINFO "Removing folder '${UPDATE_SITE__QUALIFIED_VERSION}'"
rm -rf ${UPDATE_SITE__QUALIFIED_VERSION}
+else
+ LSDEBUG "Folder '${UPDATE_SITE__QUALIFIED_VERSION}' does not already exist, do nothing"
fi
-LSDEBUG "Unziping '${UPDATE_SITE__ARTIFACT_NAME}'"
+LSINFO "Unziping '${UPDATE_SITE__ARTIFACT_NAME}'"
unzip -qq ${UPDATE_SITE__ARTIFACT_NAME} -d ${UPDATE_SITE__QUALIFIED_VERSION}
-if [ ! -d ${UPDATE_NIGHTLY_HOME} ]; then
- LSDEBUG "Creating folder '${UPDATE_NIGHTLY_HOME}'"
+if [ ! -d "${UPDATE_NIGHTLY_HOME}" ]; then
+ LSINFO "Creating folder '${UPDATE_NIGHTLY_HOME}'"
mkdir -p ${UPDATE_NIGHTLY_HOME}
+else
+ LSDEBUG "Folder '${UPDATE_NIGHTLY_HOME}' already exists, do nothing"
fi
LSINFO "Copying update site to '${UPDATE_NIGHTLY_HOME}'"
cp -rf ${UPDATE_SITE__QUALIFIED_VERSION} ${UPDATE_NIGHTLY_HOME}
## stream update
-LSINFO "Adding '${UPDATE_NIGHTLY_URL}/${UPDATE_SITE__QUALIFIED_VERSION}' to '${UPDATE_NIGHTLY_HOME}/${STREAM}'"
+LSINFO "Adding '../${UPDATE_SITE__QUALIFIED_VERSION}' to '${UPDATE_NIGHTLY_HOME}/${STREAM}'"
composite-repository \
-location "${UPDATE_NIGHTLY_HOME}/${STREAM}" \
- -add "${UPDATE_NIGHTLY_URL}/${UPDATE_SITE__QUALIFIED_VERSION}" \
+ -add "../${UPDATE_SITE__QUALIFIED_VERSION}" \
-repositoryName "${PROJECT_NAME} ${STREAM} nightly builds" \
-compressed
createP2Index "${UPDATE_NIGHTLY_HOME}/${STREAM}"
-LSINFO "Creating redirection from '${UPDATE_NIGHTLY_HOME}/${STREAM}/latest' to '${UPDATE_NIGHTLY_URL}/${UPDATE_SITE__QUALIFIED_VERSION}'"
-createRedirect "${UPDATE_NIGHTLY_HOME}/${STREAM}/latest" "${UPDATE_NIGHTLY_URL}/${UPDATE_SITE__QUALIFIED_VERSION}" "${PROJECT_NAME} ${STREAM} latest nightly build"
+updateLatest "${UPDATE_NIGHTLY_HOME}/${STREAM}/latest" "${UPDATE_SITE__UNQUALIFIED_VERSION}" "../.." "${PROJECT_NAME} ${STREAM} latest nightly build"
-## all updates
-
-LSINFO "Adding '${UPDATE_NIGHTLY_URL}/${UPDATE_SITE__QUALIFIED_VERSION}' to '${UPDATE_NIGHTLY_HOME}'"
+LSINFO "Adding '${UPDATE_SITE__QUALIFIED_VERSION}' to '${UPDATE_NIGHTLY_HOME}'"
composite-repository \
-location "${UPDATE_NIGHTLY_HOME}" \
- -add "${UPDATE_NIGHTLY_URL}/${UPDATE_SITE__QUALIFIED_VERSION}" \
+ -add "${UPDATE_SITE__QUALIFIED_VERSION}" \
-repositoryName "${PROJECT_NAME} nightly builds" \
-compressed
createP2Index "${UPDATE_NIGHTLY_HOME}"
-if [ ${GIT_BRANCH} = "master" ]; then
- LSINFO "On master branch, then create redirection from '${UPDATE_NIGHTLY_HOME}/latest' to '${UPDATE_NIGHTLY_URL}/${UPDATE_SITE__QUALIFIED_VERSION}'"
- createRedirect "${UPDATE_NIGHTLY_HOME}/latest" "${UPDATE_NIGHTLY_URL}/${UPDATE_SITE__QUALIFIED_VERSION}" "${PROJECT_NAME} latest nightly build"
-fi
+updateLatest "${UPDATE_NIGHTLY_HOME}/latest" "" ".." "${PROJECT_NAME} latest nightly build"
+
+LSINFO "== '${PROJECT_NAME} ${UPDATE_SITE__QUALIFIED_VERSION}' has been published @ '${UPDATE_NIGHTLY_URL}/${UPDATE_SITE__QUALIFIED_VERSION}' == "
# the javadoc