Adding convenience script for building point releases
authorChris Sharp <csharp@georgialibraries.org>
Fri, 23 Mar 2018 18:37:54 +0000 (14:37 -0400)
committerChris Sharp <csharp@georgialibraries.org>
Fri, 23 Mar 2018 18:37:54 +0000 (14:37 -0400)
build-eg/build_eg_point_release.sh [new file with mode: 0755]

diff --git a/build-eg/build_eg_point_release.sh b/build-eg/build_eg_point_release.sh
new file mode 100755 (executable)
index 0000000..e8c79cc
--- /dev/null
@@ -0,0 +1,155 @@
+#!/bin/bash
+
+# script to automate EG release packaging for point releases
+# not major releases.
+#
+# developed on ubuntu 14.04 and designed to be run there
+# see https://bugs.launchpad.net/evergreen/+bug/1757455
+
+Usage () {
+echo "Usage: $0 -o <OpenSRF version> -e <Evergreen version> -g <Git username> -h help"
+}
+
+while getopts e:o:g:h OPTIONS
+do  case "$OPTIONS" in
+    e)  EG_VERSION="$OPTARG";;
+    o)  OSRF_VERSION="$OPTARG";;
+    g)  GIT_USERNAME="$OPTARG";;
+    h)  Usage ; exit 1;;
+    [?])    Usage ; exit 2;;
+    esac
+done
+
+if [ -z $EG_VERSION ] || [ -z $OSRF_VERSION ] || [ -z $GIT_USERNAME ]; then
+    Usage;
+    exit 3
+fi
+
+# set up some variables
+WORKDIR="$PWD"
+TRANSLATION_USER="bshum"
+TRANSLATION_EXPORT="translation-export-$(echo $EG_VERSION | cut -b 1-3)"
+VERSION_STRING="$(echo $EG_VERSION | perl -e 'while (<>) {@c = split /\./, $_; print "$c[0].0$c[1]0$c[2]";}')"
+OSRF_GIT="osrf_rel_$(echo $OSRF_VERSION | sed 's/\./_/g')"
+PREV_EG_VERSION=$(echo $EG_VERSION | perl -e 'while (<>) {@c = split /\./, $_; print "$c[0].$c[1]." . ("$c[2]" - 1)}')
+UPGRADE_DOC="docs/installation/server_upgrade.adoc"
+
+# clone OpenSRF
+CloneOpenSRF () {
+if [ ! -d OpenSRF ]; then
+    git clone git://git.evergreen-ils.org/OpenSRF.git
+else
+    echo "OpenSRF directory already exists. Skipping"
+fi
+cd OpenSRF && git checkout -b $OSRF_GIT $OSRF_GIT
+cd $WORKDIR
+}
+
+# clone Evergreen
+CloneEvergreen () {
+if [ ! -d Evergreen ]; then
+    git clone git://git.evergreen-ils.org/Evergreen.git
+else
+    echo "Evergreen directory already exists.  Skipping"
+fi
+}
+
+# Add working repo so we have somewhere to push
+AddWorkingRepo () {
+cd $WORKDIR/Evergreen
+if [ "$(git config remote.working.url > /dev/null)" ]; then
+    echo "Git remote 'working' already exists.  Skipping"
+else
+    # read/write git URL
+    git remote add working git@git.evergreen-ils.org:working/Evergreen.git
+fi
+git remote update
+cd $WORKDIR
+}
+
+# Branch from rel_X_X
+CreateBranch () {
+cd $WORKDIR/Evergreen
+git checkout rel_$(echo $EG_VERSION | cut -b 1-3 | sed 's/\./_/g')
+git checkout -b rel_$(echo $EG_VERSION | sed 's/\./_/g')
+cd $WORKDIR
+}
+
+# pull in i18n changes
+UpdateTranslations () {
+cd $WORKDIR
+if [ -d "$TRANSLATION_EXPORT" ]; then
+    echo "Directory $TRANSLATION_EXPORT already exists. Skipping"
+else
+    bzr branch lp:~$TRANSLATION_USER/evergreen/$TRANSLATION_EXPORT
+fi
+cd $TRANSLATION_EXPORT
+bzr pull
+cd $WORKDIR
+Evergreen/build/i18n/scripts/update_pofiles -l $TRANSLATION_EXPORT -e Evergreen
+cd Evergreen
+git add .
+git commit -asm "Translation updates - po files"
+cd $WORKDIR
+}
+
+# update Perl version string
+UpdatePerlVersionString () {
+cd Evergreen
+sed -i "s/our \$VERSION = '[0-9].[0-9]*';/our \$VERSION = '$VERSION_STRING';/" Open-ILS/src/perlmods/lib/OpenILS.pm
+git commit -asm "Bumping Perl version string for $EG_VERSION"
+cd $WORKDIR
+}
+
+# substitute old EG version number with new EG version number in the upgrade doc
+UpdateUpgradeDoc () {
+cd Evergreen
+sed -i "s/rel_$(echo $PREV_EG_VERSION | sed 's/\./_/g')/rel_$(echo $EG_VERSION | sed 's/\./_/g')/g" $UPGRADE_DOC
+sed -i "s/Evergreen $PREV_EG_VERSION/Evergreen $EG_VERSION/g" $UPGRADE_DOC
+sed -i "s/Evergreen-ILS-$PREV_EG_VERSION/Evergreen-ILS-$EG_VERSION/g" $UPGRADE_DOC
+sed -i "s/to $PREV_EG_VERSION/to $EG_VERSION/g" $UPGRADE_DOC
+sed -i "/-$PREV_EG_VERSION-upgrade-db.sql/a - $PREV_EG_VERSION-$EG_VERSION-upgrade-db.sql" $UPGRADE_DOC
+sed -i "/^-.*-$PREV_EG_VERSION-upgrade-db.sql/a - $PREV_EG_VERSION-$EG_VERSION-upgrade-db.sql" $UPGRADE_DOC
+sed -i "s^version-upgrade/.*-$PREV_EG_VERSION-upgrade-db.sql^version-upgrade/$PREV_EG_VERSION-$EG_VERSION-upgrade-db.sql^g" $UPGRADE_DOC
+git commit -asm "Updating upgrade docs for $EG_VERSION."
+cd $WORKDIR
+}
+
+# run the make release script
+MakeRelease () {
+cd Evergreen
+export PATH=$PATH:/openils/bin
+build/tools/make_release -c -v $EG_VERSION -f origin/tags/rel_$(echo $PREV_EG_VERSION | sed 's/\./_/g')
+cd $WORKDIR
+}
+
+# generate release docs
+ReleaseDocs () {
+cd Evergreen
+cp README ../release/README_$(echo $EG_VERSION | cut -b 1-3 | sed 's/\./_/g')
+cp docs/RELEASE_NOTES_$(echo $EG_VERSION | cut -b 1-3 | sed 's/\./_/g').adoc ../release/
+cd ../release/
+for i in README_$(echo $EG_VERSION | cut -b 1-3 | sed 's/\./_/g') RELEASE_NOTES_$(echo $EG_VERSION | cut -b 1-3 | sed 's/\./_/g').adoc; do
+    asciidoc -a toc -a numbered $i
+    rm $i
+done
+cd $WORKDIR
+}
+
+# push the changes to git server
+PushBranch () {
+cd Evergreen
+git push working rel_$(echo $EG_VERSION | sed 's/\./_/g'):user/$GIT_USERNAME/rel_$(echo $EG_VERSION | sed 's/\./_/g')
+}
+
+# do stuff
+CloneOpenSRF
+CloneEvergreen
+AddWorkingRepo
+CreateBranch
+UpdateTranslations
+UpdatePerlVersionString
+UpdateUpgradeDoc
+MakeRelease
+ReleaseDocs
+PushBranch