понедельник, 13 апреля 2015 г.

Автоматизация: GlassFish Auto Deploy Tool

    У нас используется несколько десятков доменов GlassFish с разными настройками, но все они содержат одно и то же приложение. Возникла необходимость автоматизировать процесс установки приложения, т.к это стало занимать очень много времени.
    Немного помучавшись :) , получаем скрипт для Cygwin/Bash:
 


#!/bin/bash

asadmin="/cygdrive/c/glassfish3/bin/asadmin.bat"
repository="/cygdrive/c/deployment/src/"
glassfish_path="/cygdrive/c/glassfish3/glassfish/domains/"
export JAVA_HOME=E:/Oracle/Middleware/jdk160_35/
export MVN_LOC=c:/deployment/apache-maven-3.2.1/
export PATH="$PATH:$JAVA_HOME:$CNTLM_LOC:$MVN_LOC/bin"

cd $repository
# Забираем из SVN последнюю версию приложения
svn checkout http://127.0.0.1/projects/my_project/ --username USER --password PASSWD

cd $repository/my_project
# C помощью Maven собираем приложение
$MVN_LOC/bin/mvn clean
$MVN_LOC/bin/mvn package

## where Maven compile war
file=$(ls c:/deployment/src/my_project/target/*.war)

cd $glassfish_path

# Читаем конфиг файл, со списком доменов
cat $etc_config/auto_deploy.cfg | grep -v '#' | sed -e '/^$/d' -e 's/:/ /g' | while read line; do
    echo $line | (read context application directory
    # Получаем админский порт GlassFish 
    admin_port=$(cat $directory/config/domain.xml | grep 'network-listener port=' | grep 'admin-listener'  | head -1 | sed -e 's/.*listener port="//g' -e 's/".protocol.*//g')
# Соединяемся с админкой GlassFish, деплоим приложение и перезапускаем домен.
$asadmin --host=localhost --port=$admin_port --passwordfile 'e:\glassfish\domains\button\password_file.txt' --user=admin << EOF
deploy --force=true --contextroot $context --name $application --target domain $file
restart-domain $directory
EOF
) ####
done


Формат конф. файла:
auto_deploy.cfg
##context:application:directory
myproject1:MyProject1:myproject1
myproject2:MyProject2:myproject2

Если статья была вам полезна - кликните на баннер или кнопку Donate :)

Популярные сообщения