[558734] Add JIRO publication script

Bug: https://bugs.eclipse.org/bugs/show_bug.cgi?id=558734
Change-Id: I92c822138d7adcfe3d9797a0cca3aefd69afcafc
Signed-off-by: Pierre-Charles David <pierre-charles.david@obeo.fr>
diff --git a/org.eclipse.emf.ecoretools.build/publish-nightly-jiro.sh b/org.eclipse.emf.ecoretools.build/publish-nightly-jiro.sh
new file mode 100644
index 0000000..d3e6a0d
--- /dev/null
+++ b/org.eclipse.emf.ecoretools.build/publish-nightly-jiro.sh
@@ -0,0 +1,143 @@
+#!/bin/sh
+# ====================================================================
+# Copyright (c) 2013, 2020 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
+# ====================================================================
+
+[ -z "$WORKSPACE"  -o -z "$PLATFORM" -o -z "$GIT_BRANCH" ] && {
+     echo "Execution aborted.
+
+One or more of the required variables is not set. They are normally
+provided by the Hudson build.
+
+- WORKSPACE  : the build workspace root.
+- PLATFORM   : the name of the target Eclipse release (e.g. kepler).
+- GIT_BRANCH : the name fo the Git branch being build/published.
+"
+    exit 1
+}
+
+######################################################################
+# Setup
+######################################################################
+
+# Exit on error
+set -e
+
+# The full version (should be taken as an argument)
+export VERSION=3.3.2
+
+# The type of build being published
+export BUILD_TYPE="nightly"
+export BUILD_TYPE_PREFIX="N"
+
+# The SSH account to use
+export SSH_ACCOUNT="genie.ecoretools@projects-storage.eclipse.org"
+
+# The root folder for all Sirius udpate sites
+export SIRIUS_UPDATES_ROOT="/home/data/httpd/download.eclipse.org/ecoretools/updates/"
+
+# Streams are of the form 1.0.x: only keep major and minor version number parts
+export STREAM=$(echo "$VERSION" | sed -r -e 's/^([0-9]+\.[0-9]+\.).*$/\1x/')
+
+# The short version, common to all versions in that stream
+export SHORT_VERSION=$(echo "$VERSION" | sed -r -e 's/^([0-9]+\.[0-9]+)\..*$/\1/')
+
+# Converts the Hudson BUILD_ID (e.g. 2013-10-15_07-07-07) into the
+# syntax we want for our update-sites (e.g. 20131015-070707)
+export BUILD_TIMESTAMP=$(echo "$BUILD_ID" | sed -e 's/-//g' -e 's/_/-/')
+
+# The timestamp in the p2 composite repos used to implement redirects
+export P2_TIMESTAMP=$(date +"%s000")
+
+# The full version for this build, e.g. 0.9.0-N20131015-070707
+export FULL_VERSION="${VERSION}-${BUILD_TYPE_PREFIX}${BUILD_TIMESTAMP}"
+
+# The root folder where all the builds of the same type as this one
+# are published
+export TARGET_ROOT="$SIRIUS_UPDATES_ROOT/$BUILD_TYPE"
+
+# The folder for this particular build
+export TARGET_DIR="$TARGET_ROOT/$FULL_VERSION/$PLATFORM"
+
+######################################################################
+# Publish the build
+######################################################################
+
+# Ensure the target folder exists
+ssh "$SSH_ACCOUNT" mkdir -p "$TARGET_DIR"
+# The actual publication of the p2 repo produced by the build
+scp -r "$WORKSPACE"/org.eclipse.emf.ecoretools.update/target/repository/* "$SSH_ACCOUNT:$TARGET_DIR"
+# Publish a dump of the build environment, may be useful to debug
+env | sort > build_env.txt
+scp build_env.txt "$SSH_ACCOUNT:$TARGET_DIR/build_env.txt"
+rm build_env.txt
+
+# copy the "all in one" update site 
+ssh "$SSH_ACCOUNT" mkdir -p "$TARGET_DIR/all-in-one"
+scp -r "$WORKSPACE"/org.eclipse.emf.ecoretools.update-all/target/repository/* "$SSH_ACCOUNT:$TARGET_DIR/all-in-one"
+
+######################################################################
+# Setup or update the redirects (implemented as composite repos)
+######################################################################
+
+# Create a p2 composite repo to setup a redirect
+create_redirect() {
+    FROM="$1"
+    TO="$2"
+
+    ssh "$SSH_ACCOUNT" mkdir -p "$FROM"
+    cat > "compositeArtifacts.xml" <<EOF
+<?xml version='1.0' encoding='UTF-8'?>
+<?compositeArtifactRepository version='1.0.0'?>
+<repository name='EcoreTools' type='org.eclipse.equinox.internal.p2.artifact.repository.CompositeArtifactRepository' version='1.0.0'>
+  <properties size='1'>
+    <property name='p2.timestamp' value='$P2_TIMESTAMP'/>
+  </properties>
+  <children size='1'>
+    <child location='http://download.eclipse.org/ecoretools/updates/$TO'/>
+  </children>
+</repository>
+EOF
+    scp compositeArtifacts.xml "$SSH_ACCOUNT:$FROM/compositeArtifacts.xml"
+
+    cat > "compositeContent.xml" <<EOF
+<?xml version='1.0' encoding='UTF-8'?>
+<?compositeMetadataRepository version='1.0.0'?>
+<repository name='EcoreTools' type='org.eclipse.equinox.internal.p2.metadata.repository.CompositeMetadataRepository' version='1.0.0'>
+  <properties size='1'>
+    <property name='p2.timestamp' value='$P2_TIMESTAMP'/>
+  </properties>
+  <children size='1'>
+    <child location='http://download.eclipse.org/ecoretools/updates/$TO'/>
+  </children>
+</repository>
+EOF
+    scp compositeContent.xml "$SSH_ACCOUNT:$FROM/compositeContent.xml"
+}
+
+# First, a link for the $VERSION (e.g. "1.2.0/luna" => "1.2.0-NYYYYMMDD-HHMM/luna")
+create_redirect "$TARGET_ROOT/$VERSION/$PLATFORM" "$BUILD_TYPE/$FULL_VERSION/$PLATFORM"
+create_redirect "$TARGET_ROOT/$VERSION/$PLATFORM/all-in-one" "$BUILD_TYPE/$FULL_VERSION/$PLATFORM/all-in-one"
+# Also create a link for the $STREAM (e.g. "1.2.x/luna" => "1.2.0-NYYYYMMDD-HHMM/luna")
+create_redirect "$TARGET_ROOT/$STREAM/$PLATFORM" "$BUILD_TYPE/$FULL_VERSION/$PLATFORM"
+#copy the zips at a stable URL
+
+scp -r "$WORKSPACE"/org.eclipse.emf.ecoretools.update/target/org.eclipse.emf.ecoretools.update*.zip "$SSH_ACCOUNT:$TARGET_ROOT/$STREAM/org.eclipse.emf.ecoretools-$VERSION-$PLATFORM.zip"
+
+# Also update the global "latest" links if we are building master
+if [ "master" = "$GIT_BRANCH" ]; then
+    create_redirect "$TARGET_ROOT/latest/$PLATFORM" "$BUILD_TYPE/$FULL_VERSION/$PLATFORM"
+fi
+
+echo "############################################################################"
+echo "[PUBLISH] Promoted into folder:  " $TARGET_DIR
+echo "[PUBLISH] Build accessible at http:/"`echo $TARGET_DIR | cut -c17-`
+echo "############################################################################"
+