SVN + Maven + jenkins 实现自动化构建

来源:互联网 发布:微信砸金蛋源码下载 编辑:程序博客网 时间:2024/05/16 11:01

搭建环境说明:

SVN 在window下 运行在 192.168.74.1
jenkins 在 linux下 运行在 192.168.58.135 版本1.65
Maven 在 linux下 运行在 192.168.58.135 版本3.0.4
tomcat7.0.4
远程主机 192.168.5.106
tomcat7.0.4
JDK 1.8.0_05

1 将jenkins.war 上传到192.168.58.135 /usr/local/tomcat8.5.9/webapps 下
通过启动tomcat 访问jenkins
或者可以使用 java -jar jenkins.war 命令

2 添加环境变量,修改工作目录
创建 /opt/jenkins ,
在/etc/profile中添加环境变量export JENKINS_HOME=/opt/jenkins,
source /etc/profile 使修改生效
如果不添加环境变量JENKINS_HOME,则默认工作目录用户工作目录下在:/root/.jenkins

3 启动tomcat。在浏览器输入http://192.168.58.135:8080/jenkins

4 添加插件
jenkins是一个可以添加插件的集成工具
点击左侧的“系统管理”—-“管理插件” —–“可选插件” 选择需要安装的插件
如: delpoy to container plugin
publish over SSH
Maven Integration plugin
SSH plugin
SVN Publisher plugin
Hudson SCP publisher plugin
点击”直接安装” —-然后安装完成重启

或者选择“高级”选项卡中—上传插件

5 系统设置
点击左侧的“系统管理”—-“系统设置”

Maven Configuration
这里写图片描述

jdk 安装
这里写图片描述

maven 安装
这里写图片描述

这里写图片描述

jenkins的访问地址(默认自己生成)
这里写图片描述

SVN的配置
这里写图片描述

Publish over SSH
这里写图片描述

Passphrase —— 与下面Username—root 的密码
Name – —– 192.168.5.106_ssh 为远程主机的名称
Hostname —-192.168.5.106 远程主机的ip
Username —–登陆远程主机的用户名
Remote Directory ——指定jenkins 在远程主机上的部署目录

点击“test configuration ” 测试下配置远程主机是否能通讯

6 新建项目
点击左边“新建”—–输入“item名称” —-选择“构建一个maven项目”

配置远程仓库:主要目的是从远程仓库拉取代码下来
这里写图片描述

这里写图片描述

这里写图片描述

配置maven 的目标:意思是使用maven进行 clean 、complier、package 、install 。
这里写图片描述

点击“高级” —-更改POM的默认地址pom.xml
这里写图片描述

/opt/jenkins/jobs/mymaven_myapptest3/workspace/myapptest1/target/myapptest1
/opt/jenkins 表示jenkins工作目录
jobs/mymaven_myapptest3 表示jenkins管理mymaven_myapptest3项目的目录
workspace 表示maven等插件的工作目录

send files or execute commands over SSH
这里写图片描述

SSH Server Name :要连接的远程主机名
Transfer Set Source files : jenkins所在的主机要传送的源文件是在这个路径下的 myapptest1/target/myapptest1.war war包

Remove prefix:在传送war 包到远程主机时需要去掉的前缀
Remote directory : 远程目录默认不填写就是之前在“系统设置”中设置的远程主机的目录

Exec command: 在远程主机上执行的shell 脚本

构建项目:这里表示构建项目使用maven的话 使用哪个maven配置文件:
(这里的clean和package 与 前面【配置maven 的目标】里面的一样的意思,至于执行哪个?测试了下是执行【配置maven 的目标】中的goals)

这里写图片描述

到此添加项目完成

这里写图片描述

**注意: 一定要注意如下的相对路径
Transfer Set Source files
Remove prefix
Root POM**

7 说明下 auto_deploy.sh 脚本

#!/bin/bashlog_time=`date +%Y%m%d%H:%M:%S`#base parametertomcat_home=/usr/local/tomcat7.0.4tomcat_port=8080shell_environment=/bin/bashwar_dir=/opt/jenkinswar_name=myapptest1.war#update  environmentecho   "*************${log_time}*********"echo   "*************start  update  environment*********"export JAVA_HOME=/usr/java/jdk1.8.0_05export JRE_HOME=${JAVA_HOME}/jreexport CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/libexport PATH=${JAVA_HOME}/bin:$PATHexport TOMCAT_HOME=/usr/local/tomcat7.0.4export CATALINA_BASE=/usr/local/tomcat7.0.4export CATALINA_HOME=/usr/local/tomcat7.0.4sleep  3#update  serverecho   "*************start update server**********"check_tomcat_status(){    netstat  -nlpt|grep  ${tomcat_port} > /dev/null    t=$?    if [ $t -eq 0  ];then       echo "tomcat is running  port is ${tomcat_port}"       echo  "shutdown  tomcat......"       echo  ">>>>>shutdown  tomcat  start >>>>>"       ${shell_environment}  ${tomcat_home}/bin/shutdown.sh       echo  ">>>>>shutdown  tomcat  end >>>>>"       sleep  5    elif [ $t  -ne  0 ];then       echo "tomcat is poweroff"       ${shell_environment} ${tomcat_home}/bin/shutdown.sh       sleep 5    fi}check_tomcat_statusdeploy_location=${tomcat_home}/webappsdirHaveWar=`ls ${war_dir}|grep ${war_name}|wc -l`if [ ${dirHaveWar} -eq 0  ]; then   echo  "%%%%%%%%%%%%%%   not  have   war  %%%%%%%%%%%%"else  echo  " ......../opt/jenkins   have  war......."fiisHaveWar=`ls ${deploy_location}|grep ${war_name}|wc  -l`   if [ ${isHaveWar} -eq 0  ];then   echo  "<<<<<< ${deploy_location}/${war_name} is  empty >>>>>"   cp  ${war_dir}/${war_name}   ${deploy_location}   echo  "*****cp  ${war_name}  to  ${deploy_location}******"   sleep  3else   echo  "<<<<< find   ${deploy_location}/${war_name} >>>>>"   rm  ${deploy_location}/${war_name}   cp  ${war_dir}/${war_name}   ${deploy_location}   echo  "*****cp  ${war_name}  to  ${deploy_location}*****"   sleep  3fiecho " #####  deploy  ${war_name}  over  #####"#reboot  tomcatecho  " reboot  tomcat  start  .........."${shell_environment}  ${tomcat_home}/bin/startup.shecho  "  reboot  tomcat  end  ........"echo "************************ deploy war package into container Successlly  **********************************"

8 构建项目

点击“立即构建” 完成项目的构建
这里写图片描述

在构建历史中可以查看构建的日志:
如:#21 —– “Console Output”—-控制台输出
这里写图片描述

原创粉丝点击