一、环境搭建

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项目的更多相关文章

  1. Linux上Makefile管理java项目

    前面文章讲到了Linux上通过.spec文件与rpmbuild命令将java程序打包为RPM安装包, 现阶段遇到新的需求: 使用Makefile来操纵java的编译.打包 该需求以前面的内容为基础 可 ...

  2. jenkins+maven+git持续集成部署问题总结

    1.这个问题出现在单独构建一个项目的子模块时,很奇怪,构建父项目没有问题. Executing Maven: -N -B -f /root/.jenkins/workspace/newMer/pom. ...

  3. Linux上Tomcat部署JavaWeb项目

    一.安装JDK 配置java的环境变量,修改/etc/profile文件:vi /etc/profile 然后按下字母i进入插入模式, shift+insert粘贴; esc退出编辑; :wq保存退出 ...

  4. Linux上tomcat部署web项目,访问报错"ip访问时间过长"

    项目原来是可以访问的,后来突然不能不访问了,系统ip也是能ping通的,后来就想是不是防火墙的问题,查看一下还真是 原因:Linux服务器上的防火墙开着,关闭即可 1.查看firewall服务状态 s ...

  5. 通过Jenkins部署java项目

    部署java项目-创建私有仓库 Jenkins大多数情况下都是用来部署Java项目,Java项目有一个特点是需要编译和打包的,一般情况下编译和打包都是用maven完成,所以系统环境中需要安装maven ...

  6. 基于Kubernetes/K8S构建Jenkins持续集成平台(上)-1

    基于Kubernetes/K8S构建Jenkins持续集成平台(上)-1 Jenkins的Master-Slave分布式构建 什么是Master-Slave分布式构建 Jenkins的Master-S ...

  7. 基于Kubernetes/K8S构建Jenkins持续集成平台(上)-2

    基于Kubernetes/K8S构建Jenkins持续集成平台(上)-2 Kubernetes实现Master-Slave分布式构建方案 传统Jenkins的Master-Slave方案的缺陷 Mas ...

  8. linux+jenkins+github+python持续集成

    1.服务器上事先安装jenkins   参见:linux上war包方式安装Jenkins 2.新建一个自由风格的job,名字随意起 3.配置git(拉取github代码) 从github复制pytho ...

  9. Jenkins持续集成(上)-Windows下安装Jenkins

    环境:Windows 2008 R2.Jenkins2.235.1: 概要 前面写过一篇文章,<自动发布-asp.net自动发布.IIS站点自动发布(集成SLB.配置管理.Jenkins)> ...

随机推荐

  1. 移动端取消touch高亮效果

    在做移动端页面时,会发现所有a标签在触发点击时或者所有设置了伪类 :active 的元素,默认都会在激活状态时,显示高亮框,如果不想要这个高亮,那么你可以通过css以下方法来禁止: .xxx{ -we ...

  2. 0 开发的准备工作一一虚拟机virturalbox

    https://www.virtualbox.org/wiki/Linux_Downloads官网下载linux版本 https://www.ubuntu.com/desktop/developers ...

  3. SQL Server 2008读取域帐户信息

    参考:http://www.pawlowski.cz/2011/04/querying-active-directory-sql-server-t-sql/ 1.建立  link server . u ...

  4. Oracle中PL/SQL的循环语句

    在PL/SQL中可以使用LOOP语句对数据进行循环处理,利用该语句可以循环执行指定的语句序列.常用的LOOP循环语句包含3种形式:基本的LOOP.WHILE...LOOP和FOR...LOOP. LO ...

  5. Halcon常用算子01

    F1:Help F2:重置 F3:激活一行程序 F4:注销一行程序 F5:执行到stop()或程序结尾 F6:步执行(一步步调试) F10:添加或撤销断点 dev_open_window:打开图像窗口 ...

  6. 2017面向对象程序设计(Java)第2周学习指导及要求(2017.8.28-2017.9.3)

    学习目标 继续适应老师教学方式的变化,能按照翻转课堂教学要求完成课前知识学习: 掌握Java Application程序结构: 掌握Java的数据类型与变量: 学会使用运算符构造各类表达式: 掌握输入 ...

  7. SVM参数解析

    一.Opencv中的核函数定义(4种): 1.CvSVM::LINEAR : 线性内核,没有任何向映射至高维空间,线性区分(或回归)在原始特点空间中被完成,这是最快的选择. 2.CvSVM::POLY ...

  8. 单元测试框架unittest

    单元测试:单元测试,是指对软件中的最小可测试单元进行检查和验证,对于单元测试中单元的含义,一般来说,要根据实际情况去判定其具体含义如:c语言中单元指一个函数,java里单元指一个类,图形化的软件中可以 ...

  9. C# delegate (001)

    背景:一直不是很理解C#中的委托,也不是很清楚委托应用的业务场景,有可能和自己一直做B/S有关 业务描述:C/S,父窗口打开子窗口,子窗口把自己文本框里的值传个父窗口的文本框. 子窗体代码: //定义 ...

  10. Linux 机器的渗透测试命令备忘表

    如下是一份 Linux 机器的渗透测试备忘录,是在后期开发期间或者执行命令注入等操作时的一些典型命令,设计为测试人员进行本地枚举检查之用. 系统信息命令 对于本地的枚举检查很有用. 基于 Redhat ...