利用Jenkins实现JavaWeb项目的自动化部署
修改代码,打包,上传,重启... 大把的时间花费在这些重复无味的工作上。笔者与当前主流的价值观保持一致:我们应该把时间花费在更有意义的事情上。我们可以尝试借助一些工具,让这些重复机械的工作交给计算机去完成,这也是我们做软件开发的核心思想。
借用 Jenkins 持续集成重复工作是一个很不错的选择。
研究 Jenkins 的最终目的是解决公司中 Java Web 项目的自动化部署,公司项目本身是由几个服务,一个 API 项目以及不同客户端组,希望部署到不同服务器。初次使用 Jenkins 应用于现有的项目,一般规律是这样的:第一次总是困难的,困难的事情结合困难的事情就叫难上加难,我们需要先把问题化小。笔者最终将问题暂时转化为如下问题:
基于 Maven 构建的 Java Web 项目,使用 Jenkins 部署到另一台机器上。
<!-- more -->
部署准备
在本地测试通过,可以通过
maven
构建的项目项目提交至远程
git
服务器Java Web 项目的运行服务器上具有项目所需要的运行环境
Supervisor 进程管理工具
笔者已将此次工作的项目提交至 Github(项目名称是 testweb,项目地址),并提前整理了两篇工具安装及使用的教程: 进程管理工具Supervisor的安装及使用,Jenkins的安装及部署。
Jenkins 配置
Jenkins 插件依赖
Jenkins 需要具备的插件:Publish Over SSH
,Maven Integration plugin
,Git plugin
构建环境配置
进入 主界面 > 系统管理 > Global Tool Configuration 配置构建所需的 Maven 执行环境,Java 运行环境,Git 执行环境,所涉及的 JAVA_HOME
、 Git executable
、MAVEN_HOME
的内容与 Jenkins 运行机器配置同步。
SSH 配置
进入 主界面 > 系统管理 > 系统设置 编辑 Publish over SSH 配置项:
其中,Key
的填入值是运行 Jenkins 用户对应的 /home/{username}/.ssh/id_rsa
项目运行进程配置
使用 maven 构建后,项目可以通过 java -jar {projectName}.war
运行,我们使用 Supervisor 确保此命令已守护进程方式运行。在 Supervisor 子进程配置文件下加入 testweb.conf
,内容大致如下:
[program:testweb]
command=java -jar /{ssh配置的目录}/testweb.war
stdout_logfile={日志输出目录}/testweb.log user=root autostart=true autorestart=true startsecs=30 startretries=5
创建 Jenkins 集成部署项
进入 主界面 > 新建 创建新的部署项,我们选择构建一个Maven项目,做以下配置:
项目基本配置
基本配置包括项目的名称,项目简介
项目源码来源
我们源码来源是远程 git 仓库,选择 git ,然后填入项目的 git 地址
构建触发器、构建环境、前置构建工作暂时不用修改,保持默认即可
build 配置
我们的 JavaWeb 项目是基于 Maven 构建,所以我们需要填入 Maven 构建的 root pom 地址
构建后的操作
构建后的操作是部署到其他服务器的关键步骤,项目最终配置如下:
将 Source files 传输到 SSH Server,删除 Remove prefix 前缀,然后在 SSH Server 执行 Exec command。
执行构建
进入 项目面板,点击立即构建,开始一次构建任务,项目面板效果如下:
确保最终构建是蓝色,如果是红色或者黄色,我们就需要进入构建日志,排查问题了
利用Jenkins实现JavaWeb项目的自动化部署相关推荐
- Jenkins发布PHP项目之一自动化部署
开始构建项目 新建-输入项目名称php-deploy,选择构建自由风格的软件项目-下一步 Gernal配置,丢弃旧的构建,防止jenkins构建较多之后变臃肿 配置好源码管理之后可以直接先保存构建一次 ...
- Java利用jenkins做项目的自动化部署
本地的jekins密码 2722e8ea873b4cf08884c22dff732bab 这篇文章主要介绍了Java利用jenkins做项目的自动化部署,小编觉得挺不错的,现在分享给大家,也给大家做个 ...
- AWS DevOps – 配合Jenkins和CodeDeploy实现代码自动化部署
AWS DevOps – 配合Jenkins和CodeDeploy实现代码自动化部署 Amazon ElastiCache 连接至 Redis 节点 通过 AWS Command Line Inter ...
- 夕阳桥断 Linux(centos6.5)下安装jenkins Jenkins 的前身是 Hudson 是一个可扩展的持续集成引擎。 通俗的来讲,jenkins就是一个可以实现自动化部署的一个插
夕阳桥断 Linux(centos6.5)下安装jenkins Jenkins 的前身是 Hudson 是一个可扩展的持续集成引擎. 通俗的来讲,jenkins就是一个可以实现自动化部署的一个插件, ...
- Linux tomcat部署War包,Linux在Tomcat部署JavaWeb项目,Linux部署War包
Linux tomcat部署War包,Linux在Tomcat部署JavaWeb项目,Linux部署War包 >>>>>>>>>>>& ...
- Jenkins结合Gitee(码云)自动化部署Springboot项目(比较详细)
Jenkins结合码云自动化部署Springboot项目 一.准备工作(有的话,可以忽略) 1. 安装wget 2. 安装jdk 3. 安装maven 4. 安装git 二.开始部署 (jenkins ...
- (二)jenkins+bonobo git server+windows系统自动化部署springboot项目(自动化部署)
前提:jenkins安装 参考:(一)jenkins+bonobo git server+windows系统自动化部署springboot项目(jenkins安装) 1插件下载 主要是检查如下插件是否 ...
- 利用gitee仓库的流水线功能实现Java项目的自动化部署
背景:因为之前每次写完新的BUG之后,需要手动打包然后传到服务器,再进行启动,整个过程太浪费时间,而且没有一点技术含量,所以想做自动化部署. 本次自动化部署采用了gitee退出的仓库流水线功能,可以帮 ...
- jenkins修改pom文件_自动化部署—Jenkins+Docker构建工程
================= 交作业:hello-world级的自动化部署(Maven+Git+Docker+Jenkins),因为内容稍微有点儿多,分两篇,这是第二篇--构建工程. ===== ...
最新文章
- 约瑟夫死亡游戏算法问题
- 架构之:微服务架构漫谈
- jsp获取多个checkbox的值
- python如何使用多线程_Python 类中的方法如何多线程调用?
- 在web3上搭建ecshop网上商城
- HBuilder 模拟器
- ROS入门-11.客户端Client的编程实现
- Office groove系统的术语
- andorid月总结
- nginx allow 多个ip ipv4的网段表示方法解析
- yb3防爆电机型号含义_温州出租大型发电机定做-智慧动力机械设备租赁
- rap韵脚大全(包含各种诗词歌曲的韵脚等)
- 剩余方差matlab,用matlab的var函数求方差
- meson ninja 简介
- 辛格函数sinc(x)和抽样函数Sa(t)
- 基于asp.net725原创(古代)文学交流网站系统
- Azure CDN 服务详解
- 2019CCPC秦皇岛打铁(游)记
- 信息泄露能算高危漏洞吗
- 面经:2020校招中兴提前批面试经历
热门文章
- C++确定字符串是否具有唯一字符的算法(附完整源码)
- C++用二进制交换二个数的实现算法(附完整源码)
- C++无符号整数的反转位的实现算法(附完整源码)
- OpenGL程序管道,可分离程序和着色器子例程的基本用法
- C语言实现了一个顺序表(附完整源码)
- C++11之异步调用
- 1.13.、1.14.Flink 支持的DataType和序列化、Flink Broadcast Accumulators Counters Distributed Cache
- 从websphere6.1迁移到weblogic10.3的问题总结
- linux下重启weblogic(关闭和启动)
- 7.Eclipse中创建新Maven项目