一、安装 和 准备工作

我们选择了用 Tomcat 服务器下 war 包的安装方式。Jenkins 的下载地址:http://mirrors.jenkins-ci.org/,打开链接后,表格有war列。Releases行是短期更新包,LTS行是长期更新包。一般选择Releases下载即可。将下载完成的 war 包 放在 Tomcat 服务器的 webapps 目录下,然后启动服务器即可。建议单独用一台 Tomcat 服务器部署,方便管理。

1、Tomcat 服务器运行起来后,用浏览器访问 http://ip地址:端口号/jenkins 如下图:

2、在 Linux 服务器上执行 cat /root/.jenkins/secrets/initialAdminPassword 复制密码并粘贴:

3、安装推荐的插件即可。插件安装完成后,可以创建一个管理员账户:

  4、创建用户后,进入Jenkins ,页面如下图:

5、点击 系统管理 --> 管理插件 --> 可选插件 ,搜索 Maven Integration (用来Maven 编译打包)和 Publish Over SSH (用于远程服务器发布) 插件,安装完成后重启:http://IP地址:端口号/jenkins/restart

6、点击 系统管理 --> 全局工具配置,安装配置好 JDK、Maven 和 Git。不会安装的自行百度...

tips:安装好 git 后请把服务器公钥添加到 gitlab 服务器。

二、构建 Maven 项目

1、输入任务名称,选择 构建一个 Maven 项目:

2、源码管理

3、构建触发器

build whenever a snapshot dependency is built -->当job依赖的快照版本被build时,执行本job。
build after other projects are built -->当本job依赖的job被build时,执行本job
build periodically -->隔一段时间build一次,不管版本库代码是否发生变化,通常不会采用此种方式。
poll scm -->隔一段时间比较一次源代码如果发生变更,那么就build。否则,不进行build,通常采用这种方式。

这里我选择手动触发部署,所以没有勾选任何一项。

4、构建环境

Delete workspace before build starts --> 默认删除所有的,也可以设置删除特定的文件

- Patterns for files to be deleted:正则匹配删除哪些文件
- Apply pattern also on directories:规则是否也应用到文件夹
- Check parameter:是否删除,是个bool值,true则删除,false不删除
- External Deletion Command:执行外部删除命令

Abort the build if it’s stuck --> 构建阻塞的时候,根据超时策略处理.

- Time-out strategy:超时策略,有绝对时间,相对时间,根据以前的构建时间判断等
- Time-out variable:超时时间
- Time-out actions:超时后的处理,如终结,faile调或者写描述
- Add timestamps to the Console Output:在输出界面添加时间戳
- Use secret text(s) or file:使用密文,用于全局性的管理密码等,勾选后会在下方出现Binding,输入需要的用户名,密码证书等就可以了。

  5、Build

6、Post Steps

当Maven 编译打包完成后,接下来的工作就是 把 war包 解压到 Tomcat 服务器的 /webapps/ROOT 目录下,然后重启服务器。为此准备了两个脚本 deploy.sh (解压war包并重启服务器),重启服务器 用到了另一个脚本 restart.sh 。接下来看一下这两个脚本的具体内容:

deploy.sh

#!/bin/shwar=$1
bin=$(cd `dirname $0`; pwd)if [ ! -n "${war}" ]; thenecho "***Usage: $0 [project.war]"exit 0
fi
if [ ! -f "${war}" ]; thenecho "***Error: ${war} does not exist."exit 0
fi
if [ ! "${war##*.}" = "war" ]; thenecho "***Error: ${war} is not a war file."exit 0
fiecho "Deploy ${war##*/}..."
rm -rf ${bin}/../webapps/ROOT/
cd ${bin}/../webapps && mkdir ROOT && cd ROOT
jar -xvf ${war}
rm -rf ${bin}/../work/Catalina/localhost/
echo "Restart tomcat..."
sh ${bin}/restart.sh

备注:1、deploy.sh会先清空tomcat下的ROOT目录,再将指定的war包加压至ROOT目录,最后执行restart.sh重启tomcat。

2、可以使用 unzip 命令 直接解压,但是我发现我们服务器上经常没有安装 unzip 这个软件,所以选择了如上的方式。

3、一键发布命令:./deploy.sh 项目war包    例如:./deploy.sh /home/test.war 。

restart.sh

#!/bin/shbin=$(cd `dirname $0`; pwd)
pid=$(ps aux | grep tomcat | grep -v grep | grep -v restart | grep ${bin} | awk '{print $2}') if [ -n "${pid}" ]; thenecho "Shutdown..."sh ${bin}/shutdown.shsleep 3pid=$(ps aux | grep tomcat | grep -v grep | grep -v restart | grep ${bin} | awk '{print $2}')if [ -n "${pid}" ]; thenkill -9 ${pid}sleep 1fi
fiecho "Startup..."
sh ${bin}/startup.sh
if [ "$1" = "-v" ]; thentail -f -n 600 ${bin}/../logs/catalina.out
fi

备注:1、restart.sh是用来重启tomcat的,如果tomcat没有启动则直接启动,如果已经启动就先shutdown再启动,如果shutdown之后3s没有停掉tomcat进程,则kill掉原来的进程再启动。

2、如需重启tomcat则使用命令:./restart.sh 或 ./restart.sh -v (参数-v表示启动时打印tomcat启动日志)。

实施方案: 把 deploy.sh 和 restart.sh 拷贝到 Tomcat 的bin目录下,再用chmod +x 给这两个脚本赋上可执行权限。

本地部署方案:

#!/bin/sh
export BUILD_ID=qianxx
sh /home/wwwroot/t8_8280_passenger/bin/deploy.sh ${WORKSPACE}/target/*.war

View Code

远程服务器部署方案:

  1. 添加服务器

系统管理 --> 系统设置 --> Publish over SSH ,服务器配置如下:

2. 工程中配置

/home/wwwroot/t8_8180_common/bin/deploy.sh /root/common/*.war

View Code

Git + Maven + Jenkins 实现自动化部署相关推荐

  1. (二)jenkins+bonobo git server+windows系统自动化部署springboot项目(自动化部署)

    前提:jenkins安装 参考:(一)jenkins+bonobo git server+windows系统自动化部署springboot项目(jenkins安装) 1插件下载 主要是检查如下插件是否 ...

  2. (三)jenkins+bonobo git server+windows系统自动化部署springboot项目(远程windows自动化部署)

    前提 jenkins安装,参考:(一)jenkins+bonobo git server+windows系统自动化部署springboot项目(jenkins安装) 自动化部署,参考:(二)jenki ...

  3. jenkins+git+maven+docker持续集成部署

    环境准备: 安装centos7.1系统,最小化安装 设置好网络和防火墙  网络需要能访问外网, ip 192.168.1.7 下面关闭防火墙 setenforce 0 systemctl stop f ...

  4. springboot 使用Jenkins实现自动化部署

    springboot 使用Jenkins实现自动化部署 简介 Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持 ...

  5. gitlab与jenkins的自动化部署(通过webhook与ansible)

    gitlab与jenkins的自动化部署(通过webhook与ansilble) 1.部署介绍 gitlab服务器:192.168.1.49:80 jenkins服务器:192.168.1.49:81 ...

  6. 最简单的Jenkins+Tomcat+Gog(Git)解决Java项目自动化部署

    网上很多关于jenkins做项目的自动化部署,各有各的方法,层出不穷,下面是我在自己的项目上做的自动化部署,很简单,可当做入门. 声明一下项目环境:非maven项目,平常直接打包成war包丢进tomc ...

  7. jenkins+git+maven搭建项目自动化持续集成

    2019独角兽企业重金招聘Python工程师标准>>> 1.概要说明 为了开发人员和测试人员的解耦,让开发和测试流程更加便捷,所以采用jenkins+git+maven这套可持续性集 ...

  8. 使用Jenkins实现自动化部署

    一.原理 开发人员提交完代码至版本控制器后,由Jenkins自动获取远程代码,自动打包,然后再自动发布的过程. 二.使用Docker安装Jenkins 前提是linux中已经安装Docker,再执行以 ...

  9. 搭建Jenkins实现自动化部署环境

    大家好,我是阿飞云 怕什么真理无穷,进一步有近一步的欢喜 ​ 本文是团队内小兄弟的学习笔记整理而来.看完本文大体了解为什么要使用Jenkins,部署Jenkins依赖的环境,以及如何用Jenkins进 ...

最新文章

  1. 数据结构算法的引言+时间复杂度
  2. [云炬创业管理笔记]第一章讨论3
  3. PAT_B_1015_C++(25分)
  4. android console命令,我们可以通过两种方式进入Android的console: 1. 直接执行命令emulator -shell; 2....
  5. LCP 07. 传递信息
  6. java IoT物联网server 读取javascript协议配置文件
  7. 这样讲 Netty 中的心跳机制,还有谁不会?
  8. java使用btree_java数据结构之二叉树遍历的非递归实现
  9. keepalived 非抢占模式
  10. linux端口映射转发工具- rinetd安装使用
  11. 基于51单片机的声音分贝测量与显示仿真
  12. 证明费马最后定理的英国数学家,终获2016阿贝尔奖
  13. 新计算机如何用光盘安装系统,无光驱怎么重装系统|新电脑无光驱重装系统步骤...
  14. 关于数据库中存储密码的加密
  15. 旧弹簧(Old spring )
  16. 数据集成解决方案探讨
  17. VS生成的exe文件发给别人打不开的问题
  18. 设计模式中的行为类模式
  19. hive 计算周几_hive返回星期几的方法
  20. 分支定界法需要注意的是什么

热门文章

  1. SSRF(服务端请求伪造)
  2. 专访中科创达王璠:怎样做好嵌入式人工智能的算法开发?
  3. ubuntu创建wifi热点plasma-nm
  4. Java 字符的验证
  5. 数据库连接池-连接的关闭内幕
  6. javascript setinterval 正确的语法
  7. ATEN命令--北大青鸟benet课程
  8. Spring Boot + Swagger
  9. servlce与filter的url-pattern介绍
  10. hibernate 与 spring 松散配置的问题