Add script to publish milestones for JIRO
Change-Id: I78a42c8171c21d433d101e3ed6ddc60dfea19a1c
diff --git a/releng/org.eclipse.emf.compare.releng/publish-milestone.sh b/releng/org.eclipse.emf.compare.releng/publish-milestone.sh
new file mode 100644
index 0000000..cb17901
--- /dev/null
+++ b/releng/org.eclipse.emf.compare.releng/publish-milestone.sh
@@ -0,0 +1,93 @@
+#!/bin/sh
+# ====================================================================
+# Copyright (c) 2021 Obeo
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0
+#
+# Contributors:
+# Obeo - initial API and implementation
+# ====================================================================
+
+# Exit on error
+set -e
+
+# The SSH account to use
+export SSH_ACCOUNT="genie.emfcompare@projects-storage.eclipse.org"
+
+NIGHTLIES_FOLDER="/home/data/httpd/download.eclipse.org/modeling/emf/compare/updates/nightly"
+MILESTONES_FOLDER="/home/data/httpd/download.eclipse.org/modeling/emf/compare/updates/milestones"
+DROPS_FOLDER="/home/data/httpd/download.eclipse.org/modeling/emf/compare/downloads/drops"
+ZIP_PREFIX="emf-compare-update-"
+GROUP="modeling.emfcompare"
+
+if [[ ! ${QUALIFIER} =~ ^[0-9]\.[0-9]\.[0-9]+\.[0-9]{12}$ ]]
+then
+ echo "$QUALIFIER doesn't match the expect format x.x.x.yyyyMMddhhmm"
+ exit 1
+fi
+
+if ssh ${SSH_ACCOUNT} "[ ! -d ${NIGHTLIES_FOLDER}/${QUALIFIER} ]"
+then
+ echo "couldn't find build with qualifier $QUALIFIER in the promoted nightlies"
+ exit 1
+fi
+
+echo "promoting build $QUALIFIER as milestone $ALIAS"
+
+IFS=. read MAJOR MINOR MICRO TIMESTAMP <<<"${QUALIFIER}"
+
+VERSION_SHORT=${MAJOR}.${MINOR}
+VERSION=${MAJOR}.${MINOR}.${MICRO}
+
+UPDATE_ROOT_COMPOSITE=false
+if ssh ${SSH_ACCOUNT} "[ ! -d ${MILESTONES_FOLDER}/${VERSION_SHORT} ]"
+then
+ UPDATE_ROOT_COMPOSITE=true
+fi
+
+ssh ${SSH_ACCOUNT} << EOSSH
+ if ${UPDATE_ROOT_COMPOSITE}
+ then
+ mkdir -p ${MILESTONES_FOLDER}/${VERSION_SHORT}
+ chgrp ${GROUP} ${MILESTONES_FOLDER}/${VERSION_SHORT}
+ fi
+
+ ## copy the nightly to its "milestones" location
+ cp -r ${NIGHTLIES_FOLDER}/${QUALIFIER} ${MILESTONES_FOLDER}/${VERSION_SHORT}/S${TIMESTAMP}
+ chgrp -R ${GROUP} ${MILESTONES_FOLDER}/${VERSION_SHORT}/S${TIMESTAMP}
+
+ ## Create a compressed archive of this repository and place it in the drops folder
+ if [ ! -d ${DROPS_FOLDER}/${VERSION} ]
+ then
+ mkdir -p ${DROPS_FOLDER}/${VERSION}
+ chgrp ${GROUP} ${DROPS_FOLDER}/${VERSION}
+ fi
+
+ mkdir -p ${DROPS_FOLDER}/${VERSION}/S${TIMESTAMP}
+ pushd ${MILESTONES_FOLDER}/${VERSION_SHORT}/S${TIMESTAMP}
+ zip -2 -r ${DROPS_FOLDER}/${VERSION}/S${TIMESTAMP}/${ZIP_PREFIX}${ALIAS}.zip *
+ popd
+ md5sum ${DROPS_FOLDER}/${VERSION}/S${TIMESTAMP}/${ZIP_PREFIX}${ALIAS}.zip > ${DROPS_FOLDER}/${VERSION}/S${TIMESTAMP}/${ZIP_PREFIX}${ALIAS}.zip.md5
+ chgrp -R ${GROUP} ${DROPS_FOLDER}/${VERSION}/S${TIMESTAMP}
+
+ ## Create the p2.index file for this milestone
+cat <<EOF >${MILESTONES_FOLDER}/${VERSION_SHORT}/S${TIMESTAMP}/p2.index
+version = 1
+metadata.repository.factory.order = compositeContent.xml,\!
+artifact.repository.factory.order = compositeArtifacts.xml,\!
+EOF
+ chgrp -R ${GROUP} ${MILESTONES_FOLDER}/${VERSION_SHORT}/S${TIMESTAMP}/p2.index
+EOSSH
+
+## Update the composite update site with this new child
+
+#cd ${MILESTONES_FOLDER}/${VERSION_SHORT}
+#/shared/common/apache-ant-latest/bin/ant -f /shared/modeling/tools/promotion/manage-composite.xml add -Dchild.repository=S${TIMESTAMP}
+
+#if [ "$UPDATE_ROOT_COMPOSITE" = true ]
+#then
+# cd ${MILESTONES_FOLDER}
+# /shared/common/apache-ant-latest/bin/ant -f /shared/modeling/tools/promotion/manage-composite.xml add -Dchild.repository=${VERSION_SHORT}
+#fi
\ No newline at end of file