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.到此环境构建完毕,希望能够帮到你。
- jenkins+svn+maven自动发布平台项目案例
- jenkins通过svn发布maven项目
- Jenkins自动发布Git,Maven项目
- windows环境下使用jenkins自动部署发布项目(eclipse + svn + maven + tomcat + jenkins),注意是windows环境
- 实现代码自动打包与发布(Jenkins+Maven+Svn)
- Jenkins+Maven+Svn实现代码自动打包与发布
- Jenkins+SVN+Maven+Shell 实现项目一键发布
- Jenkins+SVN+Maven+Shell 实现项目一键发布
- Jenkins+SVN+Maven+Shell 实现项目一键发布
- Jenkins+SVN+Maven+Shell 实现项目一键发布
- Jenkins+github+maven自动构建发布SpringBoot项目
- jenkins自动编译maven项目
- jenkins 配置git+Maven自动构建发布
- ubuntu上svn+maven+jenkins自动部署
- Jenkins+maven+svn+tomcat自动编译部署
- Jenkins+Maven+SVN自动部署配置文档
- jenkins + maven + svn + tomcat+nexus 自动部署
- Jenkins+Maven+SVN+Tomcat自动部署
- MVP模式概览
- Python函数修饰器---当方法前遇到@参数化的修饰器方法时发生的事
- python字符串格式化笔记
- Python中实例的attributes、Properties以及Descriptors
- JavaBean
- jenkins+svn+maven自动发布平台项目案例
- Redis热数据存储问题
- 命令行内解决git rebase conflict
- 摆脱celery限制
- Hadoop+Spark 之旅—脚踏实地、仰望星空(教程目录)
- android activity之间自定义类的传递
- 记Nginx正向代理请求参数
- python中partial的使用规则
- 用SPFA求解最短路径问题