Hudson配置和自动化构建部署项目

Hudson持续集成

Hudson是一个持续集成平台(升级版使用Jerkins),目前已经集成了SVN多库管理,Maven私有库,代码质量检测平台Sonarqube (目前使用的是7.2版本,需要对应的JDK版本是1.8版本)

需要安装的插件

Hudson需要的安装的基本插件如下:Legacy Maven 2 job type Plugin:这个插件主要是构建MAVEN任务, Hudson Subversion Plug-in:用于集成SVN多库管理,第一次启动Hudson时候:Hudson BIRT Charts Plugin (必选)JNA Native Support Plugin (必选)XPath Provider Plugin (必选),Publish Over SSH和Hudson SSH plugin:这两个插件主要作用是通过SSH连接自动化部署发布项目。Sonar Plugin:主要集成sonarqube。

系统设置

Hudson启动后,点击系统管理,子菜单下点击系统设置,如下。Hudson管理界面
首先需要设置平台名称,系统消息,执行者数量,生产前等待时间,签出重复次数,可以根据自己的实际需求进行设置
平台名称
JDK的配置根据当前的版本sonar版本来选择,sonar4.6以上版本要JDK1.8,配置如下
在这里插入图片描述
Maven配置需要填写版本号和MAVEN_HOME路径
MAVEN
Sonar的配置需要sonar的部署应用地址,登录用户名、密码,数据库的URL、用户名、密码:
sonar
邮件通知服务:当用户名或者密码修改后,会发送邮件到指定的邮箱,我这里选择配置QQ邮箱(要开通SMTP服务),基本配置如下:
邮箱配置
SSH部署发布配置需要部署的远程主机,主机名称,主机IP,用户名,授权验证,拷贝的远程主机地址(前缀)如/usr/local/project
SSH配置

构建MAVEN项目

如果项目存在依赖性,需要依次构建部署,如下,之前的测试项目包含了父工程(pom),公共基础类工程,公共配置类工程,核心基础工程,业务服务类功能,WEB服务展示等,存在依赖关系需要依次进行部署如下:
工程描述
父工程的项目构建如下:
点击新建任务,填写任务名称,勾选 构建一个Maven 2/3 (Legacy)项目
构建任务
点击OK配置基本描述部分
基本描述
Source Code Management 配置部分选择Subversion
需要配置Repository URL和授权部分(根据用户名密码)
subversion
POM配置
Root POM位置要结合 Hudson所在 Linux服务器中JOBs项目所在位置POM来填写,
POM
剩余
配置完成后点击save,返回到列表页面,在项目列表上点击构建按钮,等待,当为绿色的时候表示项目发布成功,如果为红色,点击控制台,查看部署过程,分析原因。
项目构建

需要启动的jar或者war工程自动化部署

这里主要说明与上述公共基础类的配置文件不同地方:以构筑的项目
edu-service-user为例,该Dubbo服务工程需要依赖edu-facade-user
勾选 Build after other jobs are built,填写项目名称
依赖项目
核心部分SSH连接调用脚本发布项目,
在这里插入图片描述
Source files:需要拷贝target目录下文件路径 相对路径 从 workspace开始算起(不包括workspace),多个文件以逗号为分割,Remove prefix:过滤需要拷贝的文件夹,从workspace到target之间路径(不包括workspace),
Remote directory:远程文件夹位置,之前在系统设置中已经配置了该远程服务器的基础路径 /usr/local/project 这里配置的路径是后续路径user
这样拷贝目标文件的完整路径是 /usr/local/project/user,
Exec command:执行远程服务器上的脚本,注意我这里通过SSH执行的脚本是service-user.sh 需要授权 chmod u+x/service-user.sh,该脚本命令如下

#!/bin/sh

## java env
export JAVA_HOME=/usr/local/java/jdk1.7
export JRE_HOME=$JAVA_HOME/jre

## service name
APP_NAME=user

SERVICE_DIR=/usr/local/project/$APP_NAME
SERVICE_NAME=edu-service-$APP_NAME
JAR_NAME=$SERVICE_NAME\.jar
PID=$SERVICE_NAME\.pid

cd $SERVICE_DIR

case "$1" in

    start)
        nohup $JRE_HOME/bin/java -Xms256m -Xmx512m -jar $JAR_NAME >/dev/null 2>&1 &
        echo $! > $SERVICE_DIR/$PID
        echo "=== start $SERVICE_NAME"
        ;;

    stop)
        kill `cat $SERVICE_DIR/$PID`
        rm -rf $SERVICE_DIR/$PID
        echo "=== stop $SERVICE_NAME"

        sleep 5
        P_ID=`ps -ef | grep -w "$SERVICE_NAME" | grep -v "grep" | awk '{print $2}'`
        if [ "$P_ID" == "" ]; then
            echo "=== $SERVICE_NAME process not exists or stop success"
        else
            echo "=== $SERVICE_NAME process pid is:$P_ID"
            echo "=== begin kill $SERVICE_NAME process, pid is:$P_ID"
            kill -9 $P_ID
        fi
        ;;

    restart)
        $0 stop
        sleep 2
        $0 start
        echo "=== restart $SERVICE_NAME"
        ;;

    *)
        ## restart
        $0 stop
        sleep 2
        $0 start
        ;;
esac
exit 0

点击save按钮,返回列表页面后重新点击构建项目,项目启动成功后
会在dubbo监控中心provider列表中显示如下:
dubbo图片
Dubbo监控中心下也会有对应的生产者记录
dubbo-monitor
配置文件勾选sonar后,该项目通过Maven配置发布到sonarqube中如下
sonarqube

感谢吴水成的Dubbo视频教程

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值