CI及Shell(Hudson)

一、持续集成及其意义

二、配置

三、构建结束后发布到指定web server

shell script:

(1)部署war例子

#!/bin/bash
# $1 is project name (e.g., "MDM-Server")
# $2 is development host name
# $3 is context name
 
 
if [ $ # -lt 3 ] ; then
     echo "Usage: $0 <project> <host> <context> [module]"
     echo
     exit -1
fi
 
 
PROJECT=$1
DEV_HOST=$2
CONTEXT=$3
if [ $ # -gt 3 ] ; then
         MODULE=$4
fi
 
 
if [ "x${MODULE}" == "x" ] ; then
         ARTIFACT_SRC=` ls /var/lib/hudson/jobs/ ${PROJECT} /workspace/target/ *.war`
else
         ARTIFACT_SRC=` ls /var/lib/hudson/jobs/ ${PROJECT} /workspace/ ${MODULE} /target/ *.war`
fi
 
 
TOMCAT_DIR= "tomcat-${CONTEXT}"
 
 
ARTIFACT_DEST=builder@${DEV_HOST}: /opt/ ${TOMCAT_DIR} /webapps/ ${CONTEXT}.war
 
 
scp ${ARTIFACT_SRC} ${ARTIFACT_DEST}
 
 
if [ $? - ne "0" ] ; then
     exit 2
fi
(2)部署js到指定目录下,可由nginx代理

 

#!/bin/bash
# $1 is project name (e.g., "Domain-UI")
# $2 is resource server name
# $3 is context name
# $4 is javascript lib directory
 
 
if [ $ # -lt 4 ] ; then
     echo "Usage: $0 <project> <server> <context> <js_dir>"
     echo
     exit -1
fi
 
 
PROJECT=$1
RES_SERVER=$2
CONTEXT=$3
JSLIB_DIRNAME=$4
 
 
JSLIB_TAR=jslib. tar
 
 
cd /var/lib/hudson/jobs/ ${PROJECT} /workspace/src/main/webapp
tar cf ${JSLIB_TAR} ${JSLIB_DIRNAME}
 
 
REMOTE_DIR= /var/lib/web/oncloud/ ${CONTEXT}
 
 
scp ${JSLIB_TAR} builder@${RES_SERVER}:${REMOTE_DIR}/${JSLIB_TAR}
ssh ${RES_SERVER} "cd ${REMOTE_DIR} && tar xf ${JSLIB_TAR}"
ssh ${RES_SERVER} "rm -rf ${REMOTE_DIR}/2.0-SNAPSHOT; mv ${REMOTE_DIR}/${JSLIB_DIRNAME} ${REMOTE_DIR}/2.0-SNAPSHOT"
ssh ${RES_SERVER} "rm -f ${REMOTE_DIR}/${JSLIB_TAR}"
 
 
rm -f ${JSLIB_TAR}
 
 
if [ $? - ne "0" ] ; then
     exit 2
fi

 

猜你喜欢

转载自singhoo.iteye.com/blog/2399284
ci