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”—-控制台输出
- SVN + Maven + jenkins 实现自动化构建
- SVN + Maven + jenkins 实现自动化构建(二)
- 使用Jenkins+Github+Maven实现自动化构建
- svn + jenkins + maven 实现java环境的自动化构建和部署
- svn + jenkins + maven 实现java环境的自动化构建和部署
- JenKins整合Maven自动化构建
- Android: Jenkins+SVN+Gradle+QQ Mojo实现项目自动化构建
- Android: Jenkins+SVN+Gradle+QQ Mojo实现项目自动化构建
- jenkins+maven+svn 自动化布署
- Linux平台搭建Jenkins+Maven+Shell实现自动化构建部署
- Jenkins+Maven+Git+Email+SSH实现持续自动化构建部署
- Linux平台搭建Jenkins+Maven+Shell实现自动化构建部署
- Linux平台搭建Jenkins+Maven+Shell实现自动化构建部署
- jenkins 实现自动化构建(三)
- jenkins 实现自动化构建(四)
- jenkins 实现自动化构建(五)
- 【Jenkins教程二】基于Linux实现Jenkins+maven+tomcat的自动化构建部署项目
- 【Jenkins教程三】基于Linux实现Jenkins+maven+git+tomcat的自动化构建部署项目
- KafkaController介绍
- 30秒看懂UML类图
- ubuntu 14.04 安装 open-vm-tools失败
- Java中自动拆装箱
- 在session对象当中无法进行属性值参数的获取
- SVN + Maven + jenkins 实现自动化构建
- Log4j2配置文件记录hibernate
- c语言:对转义字符的认识
- python+selenium自动化软件测试
- 电路实践
- windbg调试堆
- 两台Linux系统之间传输文件的几种方法
- Python中sorted参数的设计
- TCP