Jenkins与Git持续集成&&Linux上远程部署Java项目
一、环境搭建
1、安装所需软件
- Jdk
- Maven
- Jenkins
- Tomcat
- Xshell
- git
以上软件去官网下载,比较简单,不一一描述了
2、安装所需的jenkins插件
- Git plugin
- GitHub plugin git插件,download代码至本地
- Mailer Plugin 邮件插件
- Publish Over SSH 远程访问Linux服务器插件
打开jenkins—》系统管理—》管理插件—》可选插件,输入要下载的插件,勾选直接安装,安装完成页面勾选重启,插件安装成功
3、配置jdk\maven\tomcat环境变量
路径:我的电脑---》属性—》高级系统设置—》环境变量
- Jdk环境变量配置
JAVA_HOME: C:\Program Files\Java\jdk1.8.0
CLASSPATH: .; %JAVA_HOME%\lib\dt.jar; %JAVA_HOME%\lib\tools.jar
PATH: %JAVA_HOME%\bin; %JAVA_HOME%\jre\bin
- Maven环境变量配置
M2_HOME: C:\maven
MAVEN_OPTS: -Xms256m -Xmx512m
PATH: %M2_HOME%\bin
- Tomcat环境变量配置
CATALINA_BASE:c:\tomcat
CATALINA_HOME: c:\tomcat
CLASSPATH : %CATALINA_HOME%\common\lib\servlet.jar
PATH: %CATALINA_HOME%\bin; %CATALINA_HOME%\lib
- Linux环境变量配置
修改etc/profile文件,文件末尾添加
# jdk1.8 settings
JAVA_HOME=/usr/java/jdk1.8.0_51
JRE_HOME=$JAVA_HOME/jre
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
CLASSPATH=:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export JAVA_HOME JRE_HOME PATH CLASSPATH
#tomcat settings
CATALINA_HOME=/usr/local/tomcat
CATALINA_BASE=/usr/local/tomcat
export CATALINA_HOME CATALINA_BASE
保存,执行source /etc/profile生效
然后在tomcat/bin/目录下创建setenv.sh文件,文件内容如下
#!/bin/bash
CATALINA_HOME=/usr/local/tomcat
CATALINA_PID=$CATALINA_HOME/bin/CATALINA_PID
ID=`ps -ef | grep java | grep tomcat|awk '{print $2}'`
echo $ID
for id in $ID
do
echo $id > $CATALINA_PID
done
JAVA_OPTS=`-Xms512m -Xmx1024m -Xss1024K -XX:PermSize=512m -XX:MaxPermSize=1024m`
JAVA_HOME=/usr/java/jdk1.8.0_51
JRE_HOME=/usr/java/jdk1.8.0_51/jre
在tomcat/bin目录下创建CATALINA_PID文件
把setenv.sh文件内容copy至/bin/catalina.sh文件
Linux环境变量配置是为解决后面执行shell脚本时重启tomcat报错
4、修改maven配置文件,修改版本库地址和jdk版本
修改配置文件:maven—>conf-->settings.xml
jdk默认是被注释的,放开后,修改为当前安装的jdk版本,否则构建时会报错
创建maven版本库地址,然后在settings.xml中添加版本库地址
添加<localRepository>D:/repository</localRepository>一行代码,如图
5、配置远程tomcat站点,创建站点文件夹(存放war包)
修改tomcat下server.xml文件
二、构建java项目
1、设置jenkins全局变量
打开jenkins,进入系统管理,
l Maven\JDK\git安装目录,如图
l 配置邮件通知,此处的邮件地址要跟管理员一样,勾选发送邮件测试配置,输入收件人地址,若配置成功,会收到测试邮件
l 选择要发布的具体位置,输入以下内容后,点击test configuration,验证是否连接成功
SSH Server Name: 远程连接名字,随便起
HostName:远程主机ip
Usename:远程登录名
Remote Directory:发布远程目录
Passphrase/Password: 远程登录密码
2、创建maven项目,修改配置项
l 新建job,选择构建一个maven项目
l 配置job
- 源码管理:输入git地址
- 构建触发器:勾选Build whenever a SNAPSHOT dependency is built,建立快照依赖关系
- 构建文件:构建pom文件(pom相对路径,Jenkins识别路径至workspace)+构建命令clean install -P test/-P pro
- 远程发布信息:
- 设置发送邮件通知,构建不稳定时和构建失败时发送邮件通知
三、编写脚本并发布
1、编写shell脚本,脚本上传至远程机器
#!/bin/bash
export LANG="en_US.UTF-8"
PROJECT=admin
BACK_DIR=/usr/local/autodeploy/back/$PROJECT
TEMP_DIR=/usr/local/autodeploy/temp/$PROJECT
TOMCAT_HOME=/usr/local/tomcat
WEBAPPS=webapps_jfadmin
if [ -f $TEMP_DIR/$PROJECT.war ]; then
echo "=======If temp exists war,finding tomcat PID======"
#shutdown tomcat
#echo "===================killing tomcat================="
#$TOMCAT_HOME/bin/shutdown.sh
#ID=`ps -ef | grep java | grep tomcat|awk '{print $2}'`
#echo $ID
#for id in $ID
#do
#kill -9 $id
#echo "killed$id"
#done
#echo "===================killed tomcat==================="
#sleep3
if [ -f $TOMCAT_HOME/$WEBAPPS/$PROJECT.war ]; then
echo "[INFO] If /usr/local/tomcat/webapps_jfadmin/admin.war exists,it will delete old war and its folder"
echo "===================deleteing old war ================="
rm -rf $TOMCAT_HOME/$WEBAPPS/$PROJECT.war
rm -rf $TOMCAT_HOME/$WEBAPPS/$PROJECT
else
echo "===================old war not exits==================="
fi echo "Copying /usr/local/autodeploy/temp/admin.war to /usr/local/autodeploy/tomcat/webapps_jfadmin"
#echo "===================copying new war==================="
cp $TEMP_DIR/$PROJECT.war $TOMCAT_HOME/$WEBAPPS/$PROJECT.war echo "===================backing war==================="
echo "Creating the back folder "
mkdir -p $BACK_DIR
echo "Backing /usr/local/autodeploy/tomcat/webapps_jfadmin/admin.war to /usr/local/autodeploy/back/admin,and named by date"
cp $TOMCAT_HOME/$WEBAPPS/$PROJECT.war $BACK_DIR/"$PROJECT"_`date +%Y%m%d%H%M%S`.war #echo "===================deleteing temp file==================="
echo "Deleting /usr/local/autodeploy/temp/admin/admin.war"
rm -rf $TEMP_DIR/$PROJECT.war
#start tomcat
#echo "===================starting tomcat==================="
#$TOMCAT_HOME/bin/startup.sh
echo "===================finished==========================!"
else
echo "===================temp file not exits==================="
fi
2、发布
进入jobs列表,点击构建即可
构建成功,如下图所示
四、附属
4.1 Jenkins部署流程图
Jenkins与Git持续集成&&Linux上远程部署Java项目的更多相关文章
- Linux上Makefile管理java项目
前面文章讲到了Linux上通过.spec文件与rpmbuild命令将java程序打包为RPM安装包, 现阶段遇到新的需求: 使用Makefile来操纵java的编译.打包 该需求以前面的内容为基础 可 ...
- jenkins+maven+git持续集成部署问题总结
1.这个问题出现在单独构建一个项目的子模块时,很奇怪,构建父项目没有问题. Executing Maven: -N -B -f /root/.jenkins/workspace/newMer/pom. ...
- Linux上Tomcat部署JavaWeb项目
一.安装JDK 配置java的环境变量,修改/etc/profile文件:vi /etc/profile 然后按下字母i进入插入模式, shift+insert粘贴; esc退出编辑; :wq保存退出 ...
- Linux上tomcat部署web项目,访问报错"ip访问时间过长"
项目原来是可以访问的,后来突然不能不访问了,系统ip也是能ping通的,后来就想是不是防火墙的问题,查看一下还真是 原因:Linux服务器上的防火墙开着,关闭即可 1.查看firewall服务状态 s ...
- 通过Jenkins部署java项目
部署java项目-创建私有仓库 Jenkins大多数情况下都是用来部署Java项目,Java项目有一个特点是需要编译和打包的,一般情况下编译和打包都是用maven完成,所以系统环境中需要安装maven ...
- 基于Kubernetes/K8S构建Jenkins持续集成平台(上)-1
基于Kubernetes/K8S构建Jenkins持续集成平台(上)-1 Jenkins的Master-Slave分布式构建 什么是Master-Slave分布式构建 Jenkins的Master-S ...
- 基于Kubernetes/K8S构建Jenkins持续集成平台(上)-2
基于Kubernetes/K8S构建Jenkins持续集成平台(上)-2 Kubernetes实现Master-Slave分布式构建方案 传统Jenkins的Master-Slave方案的缺陷 Mas ...
- linux+jenkins+github+python持续集成
1.服务器上事先安装jenkins 参见:linux上war包方式安装Jenkins 2.新建一个自由风格的job,名字随意起 3.配置git(拉取github代码) 从github复制pytho ...
- Jenkins持续集成(上)-Windows下安装Jenkins
环境:Windows 2008 R2.Jenkins2.235.1: 概要 前面写过一篇文章,<自动发布-asp.net自动发布.IIS站点自动发布(集成SLB.配置管理.Jenkins)> ...
随机推荐
- c语言基本数据类型及存储方式
; ; ; ; ; ; ; ; float a9 = 109.23; float a10 = 111.23; double a11 = 113.113; double a12 = 115.113; c ...
- MyBatis动态SQL中trim标签的使用
My Batis 官方文档 对 动态SQL中使用trim标签的场景及效果介绍比较少. 事实上trim标签有点类似于replace效果. trim 属性 prefix:前缀覆盖并增加其内容 suffix ...
- 三种方式监听NGUI的事件方法
NGUI研究院之三种方式监听NGUI的事件方法(七) NGUI事件的种类很多,比如点击.双击.拖动.滑动等等,他们处理事件的原理几乎万全一样,本文只用按钮来举例. 1.直接监听事件 把下面脚本直接绑定 ...
- 如何配置eclipse的安卓SDK下载目录
首先,打开eclipse,主界面如图 2 点击Windows下的preference 3 然后在出现的对话框中选择“android” 4 然后我们就能看到的主界面,在这里输入android sdk的目 ...
- 吴裕雄 11-MySQL查询数据
以下为在MySQL数据库中查询数据通用的 SELECT 语法:SELECT column_name,column_nameFROM table_name[WHERE Clause][LIMIT N][ ...
- hive\hadoop 常用命令
—1—————— 后台跑程序语句: 在shell下输入: nohup hive -f aaa.sql >bbb.log 2>&1 & 然后把sql 的脚本导入服务器上:T ...
- k8s 调度器
https://blog.csdn.net/qq_21816375/article/details/78209605
- maintenance
Maintenance Primitives Operator经常需要在包含Mesos集群的机器上执行维护任务. 大多数Mesos升级可以在不影响运行的任务的情况下完成,但是有些情况下维护可能会影响正 ...
- Excel批量修改文件
[1]把下图片放在一个文件目录下面,如E:\SVM_Class\airplanes [2]点击“开始”→“运行”(或按快捷键win+R),在弹出框中输入“cmd”,进入dos操作界面. [3]do ...
- nltk的使用
1. 命令行; import nltk nltk.download() #下载相关模型等,...