修改代码,打包,上传,重启... 大把的时间花费在这些重复无味的工作上。笔者与当前主流的价值观保持一致:我们应该把时间花费在更有意义的事情上。我们可以尝试借助一些工具,让这些重复机械的工作交给计算机去完成,这也是我们做软件开发的核心思想。

借用 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 executableMAVEN_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项目的自动化部署相关推荐

  1. Jenkins发布PHP项目之一自动化部署

    开始构建项目 新建-输入项目名称php-deploy,选择构建自由风格的软件项目-下一步 Gernal配置,丢弃旧的构建,防止jenkins构建较多之后变臃肿 配置好源码管理之后可以直接先保存构建一次 ...

  2. Java利用jenkins做项目的自动化部署

    本地的jekins密码 2722e8ea873b4cf08884c22dff732bab 这篇文章主要介绍了Java利用jenkins做项目的自动化部署,小编觉得挺不错的,现在分享给大家,也给大家做个 ...

  3. AWS DevOps – 配合Jenkins和CodeDeploy实现代码自动化部署

    AWS DevOps – 配合Jenkins和CodeDeploy实现代码自动化部署 Amazon ElastiCache 连接至 Redis 节点 通过 AWS Command Line Inter ...

  4. 夕阳桥断 Linux(centos6.5)下安装jenkins Jenkins 的前身是 Hudson 是一个可扩展的持续集成引擎。 通俗的来讲,jenkins就是一个可以实现自动化部署的一个插

    夕阳桥断 Linux(centos6.5)下安装jenkins Jenkins 的前身是 Hudson 是一个可扩展的持续集成引擎. 通俗的来讲,jenkins就是一个可以实现自动化部署的一个插件, ...

  5. Linux tomcat部署War包,Linux在Tomcat部署JavaWeb项目,Linux部署War包

    Linux tomcat部署War包,Linux在Tomcat部署JavaWeb项目,Linux部署War包 >>>>>>>>>>>& ...

  6. Jenkins结合Gitee(码云)自动化部署Springboot项目(比较详细)

    Jenkins结合码云自动化部署Springboot项目 一.准备工作(有的话,可以忽略) 1. 安装wget 2. 安装jdk 3. 安装maven 4. 安装git 二.开始部署 (jenkins ...

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

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

  8. 利用gitee仓库的流水线功能实现Java项目的自动化部署

    背景:因为之前每次写完新的BUG之后,需要手动打包然后传到服务器,再进行启动,整个过程太浪费时间,而且没有一点技术含量,所以想做自动化部署. 本次自动化部署采用了gitee退出的仓库流水线功能,可以帮 ...

  9. jenkins修改pom文件_自动化部署—Jenkins+Docker构建工程

    ================= 交作业:hello-world级的自动化部署(Maven+Git+Docker+Jenkins),因为内容稍微有点儿多,分两篇,这是第二篇--构建工程. ===== ...

最新文章

  1. 约瑟夫死亡游戏算法问题
  2. 架构之:微服务架构漫谈
  3. jsp获取多个checkbox的值
  4. python如何使用多线程_Python 类中的方法如何多线程调用?
  5. 在web3上搭建ecshop网上商城
  6. HBuilder 模拟器
  7. ROS入门-11.客户端Client的编程实现
  8. Office groove系统的术语
  9. andorid月总结
  10. nginx allow 多个ip ipv4的网段表示方法解析
  11. yb3防爆电机型号含义_温州出租大型发电机定做-智慧动力机械设备租赁
  12. rap韵脚大全(包含各种诗词歌曲的韵脚等)
  13. 剩余方差matlab,用matlab的var函数求方差
  14. meson ninja 简介
  15. 辛格函数sinc(x)和抽样函数Sa(t)
  16. 基于asp.net725原创(古代)文学交流网站系统
  17. Azure CDN 服务详解
  18. 2019CCPC秦皇岛打铁(游)记
  19. 信息泄露能算高危漏洞吗
  20. 面经:2020校招中兴提前批面试经历

热门文章

  1. C++确定字符串是否具有唯一字符的算法(附完整源码)
  2. C++用二进制交换二个数的实现算法(附完整源码)
  3. C++无符号整数的反转位的实现算法(附完整源码)
  4. OpenGL程序管道,可分离程序和着色器子例程的基本用法
  5. C语言实现了一个顺序表(附完整源码)
  6. C++11之异步调用
  7. 1.13.、1.14.Flink 支持的DataType和序列化、Flink Broadcast Accumulators Counters Distributed Cache
  8. 从websphere6.1迁移到weblogic10.3的问题总结
  9. linux下重启weblogic(关闭和启动)
  10. 7.Eclipse中创建新Maven项目