hudson安装以及使用
来源:互联网 发布:贵州云博大数据 编辑:程序博客网 时间:2024/05/17 04:50
之前已经记录了maven和sonar的安装以及使用:
本篇文章将hudson安装使用说明一下,hudson 与 jenkins一样是可扩展的持续集成引擎。
持续化集成环境
1.JDK:1.8.0_60
2.hudson-3.2.2
3.操作系统 win8 64位
4.tomcat版本apache-tomcat-8.0.24
5.环境变量配置的maven是3.3.9版本(版本有误,所以最终没有用到)
6.重新下载的maven版本3.1.1
运行war包和可执行jar的环境:
1.(dubbo服务)为linux环境。(ip:192.168.103.228)
注意事项:由于处于两个服务器,所以特别需要注意项目打包使用的jdk和最后jar/war包运行的环境中tomcat所使用的jdk要保持一致。
当时由于配置了使用3.3.9版本maven时执行hudson Job时报错,所以重新又下载了maven 3.1.1,系统管理中配置的maven的maven_home是新的maven 3.1.1的安装主目录
hudson 的运行,将下载的hudson-3.2.2.war包改个名字为hudson然后丢到tomcat的webapps下(D:\Program Files (x86)\apache-tomcat-8.0.24\webapps)
插件的安装:
下载插件的网址:http://hudson-ci.org/download/plugins/
方法1. 系统管理-》管理插件 如果这种安装方法出现了问题。可以换成第二种方法
方法2. 从http://hudson-ci.org/download/plugins/网址下下载好插件,复制到hudson的用户目录下:C:\Users\a\.hudson\plugins,然后重新启动hudson即可自动安装。
用到的插件名字:
deploy.hpi是将jar包或者war包部署到tomcat,使用tomcat自带的部署方式,只要指定用户名密码和url即可。url:http://127.0.0.1:8180/ 通过tomcat自带的项目管理发布的
sonar.hpi为sonar插件
scp.hpi是通过scp方式传输文件之类。(ssh协议)
ssh.hpi 默认端口22,远程执行脚本
maven-plugin.hpi为maven插件 但是我还是禁用了,使用自己单独下载的。maven-plugin.hpi.disabled表示禁用吧,其实我猜的。
hudson用户目录
hudson主目录下C:\Users\a\.hudson\jobs下是每个hudson的job运行时所用的工作区间,在每个job下的工作区间有一个workspace目录,这个目录是从svn上拉下来的代码存放的位置。
新建一个job是在advanced job options中有一个选项Clean workspace before build可以clean workspace在每次build之前可以clean掉workspace。
操作步骤:
hudson系统配置
1.
2.
3.
4. 配置sonar-qube服务器,点击advanced配置选项
5.这个一个新的job,负责是打包dubbo服务的成为一个可执行的jar包。
6. clean deploy 并且 删除远程服务器上之前的上传的jar和lib包
Build Triggers部分配置的是触发构建的方式。可选的三种方式分别为:
□Build after other project are built:在其他项目构建完成之后构建本项目。
□Build periodically:周期性地构建本项目。
□Poll SCM:周期性地轮询源码仓库,发现有更新的时候构建本项目。
7. 配置build完之后接着执行job(pubDobboService)以及通过scp插件上传hudson用户目录下job目录下workspace下执行完deploy之后最新的jar到远程服务器上
当前目录是workspace目录,必须使用相对路径。配置中source为hudson所在的目录,destination为hudson系统配置下scp repository hosts(SCP sites)配置的远程服务器。
此处上传了一个可执行jar包和该jar包执行时所需要的jar包(放在lib文件夹下)。
<plugins><!-- 打包jar文件时,配置manifest文件,加入lib包的jar依赖 --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-jar-plugin</artifactId><configuration><classesDirectory>target/classes/</classesDirectory><archive><manifest><mainClass>com.alibaba.dubbo.container.Main</mainClass><!-- 打包时 MANIFEST.MF文件不记录的时间戳版本 --><useUniqueVersions>false</useUniqueVersions><addClasspath>true</addClasspath><classpathPrefix>lib/</classpathPrefix></manifest><manifestEntries><Class-Path>.</Class-Path></manifestEntries></archive></configuration></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-dependency-plugin</artifactId><executions><execution><id>copy-dependencies</id><phase>package</phase><goals><goal>copy-dependencies</goal></goals><configuration><type>jar</type><includeTypes>jar</includeTypes><useUniqueVersions>false</useUniqueVersions><outputDirectory>${project.build.directory}/lib</outputDirectory></configuration></execution></executions></plugin></plugins>
8.这个是在上个job(负责打包可执行jardubbo服务上传到远程服务器)之后执行的。所以Build Triggers中Build after other jobs are built选项勾上,jobs names 为efp-service-core
#!/bin/sh## java envexport JAVA_HOME=/usr/java/jdk1.7.0_80export JRE_HOME=$JAVA_HOME/jre## service nameAPP_NAME=dubboServiceSERVICE_DIR=/efp/service/$APP_NAMESERVICE_NAME=efpDubboServiceJAR_NAME=$SERVICE_NAME\.jarPID=$SERVICE_NAME\.pidcd $SERVICE_DIRcase "$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) if [ -f $SERVICE_DIR/$PID ]; then txtP_ID=`cat $SERVICE_DIR/$PID` kill -9 $txtP_ID rm -rf $SERVICE_DIR/$PID fi echo "=== stop $SERVICE_NAME" sleep 5 P_ID=`ps -ef | grep -w $JAR_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 ;;esacexit 010.
11. build Environment中勾选Execute shell script on remote host using ssh
SSH site 是在系统配置中配置的SSH remote sites配置的
SSH sites。
此处写了停止tomcat(在build之前执行)和运行tomcat的脚本并且删除之前的efp war包(在build之后执行)
build执行的是maven指令 clean deploy -Dmaven.test.skip=true 表示clean 打包 发布但是跳过执行单元测试
12. build完成之后通过scp插件将生成的war包上传到远程服务器上。
13. 这是一个新的job 负责执行sonar代码检查。
多个模块,我就在一个父文件夹下建立一个sonar-project.properties文件
sonar-project.properties内容
# Root project informationsonar.projectKey=efpsonar.projectName=efpsonar.projectVersion=1.0.0 # Some properties that will be inherited by the modulessonar.sources=src/main/java # List of the module identifierssonar.modules=efp-common-config,efp-facade-core,efp-common-web,efp-common-util,efp-service-core,efp-web-fore # Properties can obviously be overriden for# each module - just prefix them with the module ID#efp-common-config module efp-common-config.sonar.projectName=efp-common-configefp-common-config.sonar.sources=src#efp-facade-coreefp-facade-core.sonar.projectName=efp-facade-core#efp-common-webefp-common-web.sonar.projectName=efp-common-webefp-common-web.sonar.exclusions=/src/main/java/com/zbiti/platform/web/filter/**, src/main/java/com/zbiti/platform/core/**#efp-common-utilefp-common-util.sonar.projectName=efp-common-util#efp-service-coreefp-service-core.sonar.projectName=efp-service-core#efp-web-foreefp-web-fore.sonar.projectName=efp-web-fore
14. 之前安装了sonar插件,所以在这里add build step有一个选项Invoke standalone sonar analysis,增加一个 这个选项,jdk选择系统配置中配置的。就好了。
由于sonar和sonar runner在之前hudson系统配置中已经配置,所以就可以调用了。
参考网址:
http://www.cnblogs.com/AlanLee/p/5372283.html
- hudson安装以及使用
- hudson的安装和使用
- Hudson 的安装和使用
- hudson安装
- hudson安装
- Hudson 安装
- 安装hudson
- Hudson安装
- Hudson使用
- hudson的安装(windows下以及linux下)
- 菜鸟了解Hudson CI--什么是CI/Hudson?怎样安装?怎样使用?
- 菜鸟了解Hudson CI--什么是CI/Hudson?怎样安装?怎样使用?
- 自动打包工具Hudson——使用教程:Hudson安装配置、部署应用及分析
- windows 下的hudson slave的安装,使用
- Hudson 持续集成服务器的安装配置与使用
- Hudson 持续集成服务器的安装配置与使用
- Hudson 持续集成服务器的安装配置与使用
- Hudson 持续集成服务器的安装配置与使用
- Eclipse配置CardeView Library
- 一些小效果的实现
- 阿里云redis服务器安装配置
- Linux实现负载均衡
- 安全算法
- hudson安装以及使用
- 从零开始学写HTTP服务器(三)请求资源
- C++ const 用法总结
- 算法入门经典2 第3章解题报告
- 【Leetcode】477. Total Hamming Distance
- 求一个int数是否是4的幂
- python3 串口通讯
- MAC10.12Caps Lock失灵
- SpringMVC 菜鸟教程 3 文件上传 CommonsMultipartResolver