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

xiaoxiao2021-02-28  115

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

1.jenkins的安装

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

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

linux rpm 包:下载之后,通过rpm -ivh安装

修改端口号则通过修改配置文件vi /etc/sysconfig/jenkins

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.构建项目时注意一下问题

 

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

 

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

 

<strong>[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 (<a data-cke-saved-href="http://122.224.135.226:10144/nexus/content/repositories/releases" href="http://122.224.135.226:10144/nexus/content/repositories/releases">http://xxx.xxx.xxx.xxx:xxxxx/nexus/content/repositories/releases</a>) -> [Help 1]</strong>

 

 

 

缺少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.sh fi #强制结束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.$DT mv /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.到此环境构建完毕,希望能够帮到你。

转载请注明原文地址: https://www.6miu.com/read-52721.html

最新回复(0)