#!/bin/bash
BASEDIR=$(pwd)
STATIC_TARGET=client/target/generated-webapp/scripts
pkg_path(){
[ -f /etc/redhat-release ] || return 1
package=${1}
package_name=$(rpm -qa | grep ${package})
[[ -z ${package_name} ]] && echo "${1} not found! Please install it before continue!" >&2 && return 1
echo $(rpm -ql ${package_name} | grep \/bin$ | sed 's/\/bin//g')
}
[[ -z $M2_HOME ]] && export M2_HOME=$(pkg_path apache-maven)
[[ -z $JAVA_HOME ]] && export JAVA_HOME=$(pkg_path java-1.7.0-openjdk-1.7)
[[ -z $CATALINA_HOME ]] && export CATALINA_HOME=/usr/share/tomcat6/
export PATH=${PATH}:${M2_HOME}/bin
gen_version(){
cs_version=$(mvn org.apache.maven.plugins:maven-help-plugin:2.1.1:evaluate -Dexpression=project.version | grep '^[0-9]\.')
tag_version=$(date +%Y%m%d%H%M)
echo "${cs_version}-${tag_version}"
}
gen_tag(){
branch=${1}
[[ -z ${branch} ]] && branch='develop'
echo "Changing to branch '${branch}'"
git checkout -q ${branch}
echo "Getting last changes from git..."
git pull -q
tag=$(gen_version)
git tag $tag
remote=$(cat .git/config | awk -F\" '/\[remote/ {print $2}')
git push --tags
echo "RELEASE/TAG: ${tag}"
}
gen_package(){
tag=${1}
REPOPATH=${2}
BUILDDIR="${BASEDIR}/dist/rpmbuild"
[[ ! -f /etc/redhat-release ]] && echo "Opss... run this option only in RedHat OS. Exiting..." && return 1
[[ ! -d ${REPOPATH} ]] && echo "The directory ${REPOPATH} does not exist... exiting." && return 1
# export some shell environments variables
export MAVEN_OPTS="-XX:MaxPermSize=800m -Xmx2g"
(cd packaging/centos63; ./package.sh -t ${tag})
[[ $? -ne 0 ]] && echo "Failed to compile package. Please, fix errors." && return 1
# keep last 3 builds
echo "Removing old packages from yum repo ${REPOPATH}"
rpms='agent awsapi baremetal-agent cli common management usage'
for f in ${rpms}; do rm -f $(ls -1t ${REPOPATH}/cloudstack-${f}* 2>/dev/null | awk 'NR>5 {print}') ; done
echo -n "Copying files ${BUILDDIR}/RPMS/x86_64/cloudstack-[a-z]*-${tag}.el6.x86_64.rpm to $REPOPATH..."
if mv ${BUILDDIR}/RPMS/x86_64/cloudstack-[a-z]*-${tag}.el6.x86_64.rpm $REPOPATH; then
echo "done"
else
echo -e "\nFailed to copy rpm file"
exit 1
fi
# Create yum repo
echo "Creating yum repo..."
whoami=$(whoami)
[[ ${whoami} == 'root' ]] && createrepo -q ${REPOPATH} || sudo createrepo -q ${REPOPATH}
[[ $? -ne 0 ]] && echo "Failed to create yum repo... Please, fix errors." && return 1
}
continuos_delivery(){
# Gen tag
repo_path=${1}
if [ -z "${TAG}" ];
then
echo "Creating a new tag..."
TAG=$(gen_tag | awk '/RELEASE\/TAG/ {print $2}')
fi
# Build package
echo "Building tag ${TAG}"
gen_package ${TAG} ${repo_path}
}
case "$1" in
run)
rm -f *.log
MAVEN_OPTS="-Xmx2048m -XX:MaxPermSize=512m -Xdebug -Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=n" mvn -Dnonoss -Djava.awt.headless=true -pl :cloud-client-ui jetty:run
;;
run-simulator)
rm -f *.log
export RABBIT_MQ_HOST="localhost"
export RABBIT_MQ_PORT="5672"
export RABBIT_MQ_USER="guest"
export RABBIT_MQ_PASSWORD="guest"
MAVEN_OPTS="-Xmx2048m -XX:MaxPermSize=512m -Xdebug -Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=n" mvn -Dnonoss -Djava.awt.headless=true -Djava.net.preferIPv4Stack=true -Dsimulator -pl :cloud-client-ui jetty:run
;;
compile)
mvn -Dnonoss -Pdeveloper,systemvm -Djava.awt.headless=true -Dsimulator clean install -DskipTests
;;
compile-with-tests)
mvn -Dnonoss -Pdeveloper,systemvm -Djava.awt.headless=true -Dsimulator clean install
;;
compile-changes)
mvn -Dnonoss -Pdeveloper,systemvm -Djava.awt.headless=true -Dsimulator install -DskipTests
;;
compile-quick)
mvn -Dnonoss -Pdeveloper,systemvm -Djava.awt.headless=true -Dsimulator -pl :cloud-framework-config,:cloud-utils,:cloud-server,:cloud-api,:cloud-engine-components-api,:cloud-plugin-network-globonetwork,:cloud-plugin-network-globodns,:cloud-plugin-network-globoaclapi,:cloud-plugin-user-authenticator-oauth2,:cloud-client-ui install -DskipTests
;;
update-js)
rm -R $STATIC_TARGET/*.js.gz ; rm -R $STATIC_TARGET/loadbalancer/*.js.gz ; rm -R $STATIC_TARGET/ui/*.js.gz ; rm -R $STATIC_TARGET/ui-custom/*.js.gz ; rm -R $STATIC_TARGET/ui/widgets/*.js.gz ; cp -R ui/scripts client/target/generated-webapp/ ; rm -R $STATIC_TARGET/../plugins/globoNetworkVipPlugin/*.js.gz ; cp -R ui/plugins client/target/generated-webapp/
;;
deploydb)
mvn -Dnonoss -Pdeveloper -pl developer,tools/devcloud -Ddeploydb
;;
deploydb-simulator)
mvn -Dnonoss -Pdeveloper -pl developer -Ddeploydb
mvn -Dnonoss -Pdeveloper -pl developer -Ddeploydb-simulator
;;
db-migrate)
[[ -z $WORKON_HOME ]] && WORKON_HOME=$HOME/.virtualenvs
source $WORKON_HOME/cloudstack/bin/activate
(cd setup/dbmigrate && db-migrate --env=localhost)
;;
tag)
gen_tag ${2}
;;
gen_version)
gen_version
;;
package)
[[ $# -ne 3 ]] && echo "Use: $0 package