jenkins+svn+maven自动发布平台项目案例

来源:互联网 发布:egg drop. 算法 编辑:程序博客网 时间:2024/05/29 07:18

随着运维工作的深入,公司数据的增长,自动发布平台不可或缺。那么用一款比较好的开源软件合适,还是开发一款适合自己的项目比较好呢?显然使用开源软件节约时间,相对较安全,还是不错的。很多公司都采用SVN当存储,因此本文将着重介绍jenkins+maven的自动发布及部署内容。

1.jenkins的安装

官网地址:https://jenkins.io/

linux:访问jenkins的官网下载jenkins.war包,将包放入tomcat容器中访问即可。

windows:访问jenkins官网下载windows版本,安装后使用net start jenkins 启动服务,访问地址127.0.0.1:8080

2.maven的安装

官网地址:http://maven.apache.org/

linux:下载apache-maven-3.5.0-bin.tar.gz,解压后设置环境变量即可

# tar zxvf apache-maven-3.5.0-bin.tar.gz

# mv apache-maven-3.5.0 maven3

# vi /etc/profile 

添加以下内容

MAVEN_HOME=/usr/local/app/maven3
export MAVEN_HOME
export PATH=${PATH}:${MAVEN_HOME}/bin

# source /etc/profile

windows:下载apache-maven-3.5.0-bin.zip,解压后设置环境变量即可

# 计算机==>属性==>高级系统设置==>环境变量==>系统变量==>添加如上变量即可


3.配置jenkins基础jdk环境和maven环境,不推荐自动安装

#系统管理==>Global Tool Configuration

 





4.安装jenkins插件

Maven Integration plugin

    Deploy to container Plugin

5.新建项目任务




6.构建项目时注意一下问题

[WARNING] The POM for org.xmlpull:AXMLPrinter:jar:2.0 is missing, no dependency information available

缺少依赖关系处理jar AXMLPrinter,将该依赖包放入maven的repository中

[ERROR] Failed to execute goal on project wsxc-xxxxxx-xxx: Could not resolve dependencies for project com.xxx.xxx:xxx-xxx-xxxjar:1.0.0-SNAPSHOT: Could not find artifact com.alibaba:hessian-lite:jar:3.2.1-fixed-2 in opensesame.releases (http://xxx.xxx.xxx.xxx:xxxxx/nexus/content/repositories/releases) -> [Help 1]

缺少hessina-lite jar ,将该jar放入maven的repository中


项目构建时注意事项

日志输出很重要,要时刻关注日志报错内容,针对处理

基础环境问题要搞好

7.到此项目构建成功


8.构建成功后的项目部署可使用tomcat的热部署,也可以使用构建成功后采用shell脚本,手动执行部署任务,下面将介绍部署部分。

方法A:热部署

   Deploy to container Plugin上面我们部署了jenkins这个插件之后,将会支持tomcat7X的热部署,前提是要tomcat-user.xml的配置文件要开启

如下编辑tomcat-user.xml:

 <role rolename="tomcat"/>
  <role rolename="manager-gui"/>
  <role rolename="manager-script"/>
  <role rolename="manager-jmx"/>
  <role rolename="manager-status"/>
  <user username="tomcat" password="123456" roles="tomcat,manager-gui,manager-script,manager-jmx,manager-status"/>

打开jenkins项目配置

方法B:采用shell方式

command 内容可如下,只是写了教简单的部分,可自行编写


#!/bin/bash#echo off#DT=` date "+%Y-%m-%d.%H:%M:%S"`#如果修改的是后台的java代码,那么就需要重启tomcat服务器,如果只是修改前台的代码就不需要重启tomcat服务器,tomcat会自动解压war内容。#如果不需要重启tomcat,那么将下面行注释即可#正常结束tomcat进程tomcat_status=`curl -I -m 10 -o /dev/null -s -w %{http_code} http://192.168.10.101:8080`if [ tomcat_status -eq 200 ]then/usr/local/app/tomcat/bin/shutdown.shfi#强制结束tomcat进程方法#tomcat_pid=`ps -ef| grep tomcat | grep -v "grep" | awk '{print $2}'`#kill -9 $tomcat_pid#备份原war包,删除目录mv /usr/local/app/tomcat/webapps/test.war /usr/local/app/tomcat/webapps/test.war.$DTmv /usr/local/app/tomcat/webapps/test /tmp/test.$DT#移动你的war包至tomcat容器内mv /root/.jenkins/workspace/user/target/test.war /usr/local/app/tomcat/webapps/#启动tomcat进程/usr/local/app/tomcat/bin/startup.sh#end

补充:

假设很多情况大家可能会需要向远程主机部署,那么我觉得真实环境可能是这样。

jenkins=内网联网机器,外网无法访问保障安全。

tomcat=外网容器

那么大家需要向远程主机部署时怎么解决,首先也是有两种方案,一种就是利用热部署,那么如何做到实际应用

首先要理解的是,这些tomcat的默认页面在生成环境能不能被允许存在,如果不被允许,那么直接往下看,用shell方法。如果被允许,就可能无法避免的会被用户访问到,因此,要自作权衡。下面介绍shell远程部署

远程部署也很简单,这里给大家提供一个样例,有免密登录的那就很简单了,这里介绍不免密登录的处理方法

首先在远程主机上写一个脚本,内容可参考上。下面只需要写一个调用此脚本的shell即可


#!/usr/bin/expect
spawn ssh 192.168.10.101
expect {
"yes/no" { send "yes\r";exp_continue }
"password:" { send "admin\r" }
}


expect "*from*"
send "sh /root/2.sh\r"
expect "#"


9.到此环境构建完毕,希望能够帮到你。

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 红米3s手机发热怎么办 魅蓝s6信号差怎么办 oppo手机媒体音量没声音怎么办 红米note3反应慢怎么办 红米4g信号差怎么办 红米4g网速慢怎么办 红米24g信号不好怎么办 红米54g信号不稳定怎么办 红米4a玩游戏卡怎么办 红米4x卡顿怎么办 红米主板烧了怎么办 红米3按键失灵怎么办 l安卓手机运存不够用怎么办 红米2屏幕失灵怎么办 红米手机电池不耐用怎么办 红米手机没内存怎么办 红米2a卡顿怎么办 红米2a手机卡顿怎么办 红米5a内存不足怎么办 红米note1s内存不够怎么办 红米2手机没内存怎么办 红米note显示无服务怎么办 红米手机死屏了怎么办 红米4a信号不好怎么办 小米2a开不了机怎么办 红米4x屏幕失灵怎么办 红米4x外屏坏了怎么办 honor手机开不了机怎么办 honor黑屏开不了机怎么办 红米2开机停在mi怎么办 红米手机无法开机怎么办 小米手机帐号密码忘了怎么办 小米手机忘记小米账号密码怎么办 小米4账号密码忘了怎么办 小米2a触屏失灵怎么办 红米note5拍照不清晰怎么办 红米手机太卡怎么办 红米3x忘记密码怎么办 红米手机太卡了怎么办 红米手机太卡怎么办? 红米3老是死机怎么办