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