利用jenkins+maven部署java应用到远程服务器

Jenkins自动打包并部署到远程服务器 本文主要介绍了使用Jenkins自动打包到远程服务器。 一、Jenkins简介 Jenkins是一个开源软件项目,是基于Java开发的广泛用于持续构建的可视化web工具,就是各种项目的的“自动化”编译、打包、分发部署,将传统编译、打包、上传、部署到Tomcat中的过程交由Jenkins,Jenkins通过给定的代码地址,将代码拉取到jenkins宿主机上,进行编译、打包和发布到web容器中。J... 阅读详情

jenkins作为持续集成的利器,在很多公司都会使用,他可以很方便集成其他的工具,提供对项目代码管理,代码review,打包,发布一站式服务。jenkins使用java语言写的,安装的前提是需要安装jdk,既可以在直接通过java -jar jenkins.war运行,也可以将它放到tomcat的webapps目录下,随着tomcat启动而启动。

这里要进行的试验是利用jenkins持续集成将git远程代码拉取到jenkins目录下,然后利用maven对项目进行构建,然后将构建的jar包,发布到远程服务器上,并运行起来。

这里对试验资源的规划:两台虚拟机,一台作为jenkins持续集成的机器server,另一台作为远程发布java项目的机器node01。他们都需要安装jdk.

一、开始安装

server上需要安装的相关程序:

1、jdk安装,略过。

2、jenkins的安装,这里我依赖于一个tomcat8,将下载的jenkins.war包放入tomcat/webapps目录下,启动tomcat来启动jenkins。

  a)tomcat启动之后,会启动jenkins,jenkins项目启动之后,会在/root目录下生成.jenkins目录,这里存放jenkins插件,配置,登录密码,项目空间等,如下图所示:

密码在secrets/initialAdminPassword中。


  b)jenkins启动之后,访问地址为http://192.168.42.128:8080/jenkins,登录用户名和密码:admin/d2a9c843d2114f109d0572ce9ebf27fa

	

  c)jenkins只是一个管理工具,他需要集成其他工具才能进行后续代码打包发布。

3、git安装,centos下,可以直接用yum来安装,装完即可使用git命令,这里我们只需要git作为客户端命令来使用。

  1. yum install git  
查看git版本

4、maven安装,上apache官网,找到maven,下载解压缩,设置环境变量即可使用。

	

node01机器:

jdk安装,略过。

二、配置

git,maven安装完成,就可以开始着手构建项目了,这里需要将系统的git,maven集成到jenkins,所以,需要安装对应的插件。

插件安装和配置,左侧菜单中依次选择系统管理->插件管理,选择可选插件tab页,可以搜索以下插件:

1)maven integration plugin //该插件安装了,才能创建maven项目。

2)git plugin                             //从远程拉取代码

3)deploy to container plugin //发布

4)publish over ssh                //ssh远程登录


选择了插件,可以直接安装,该过程会等待,不是立即就可以完成的,视网络情况而定。

下面就开始进行配置。

1、系统设置,这里需要设置远程机器node01的key,name,hostname,username。

先在远程机器node01上通过ssh-keygen命令生成无密码登录的秘钥。然后将id_rsa的内容粘贴到publish over ssh部分的key文本框中。

然后填写node01机器名称,ip,登录名,默认root.

2、系统工具配置,依次选择系统管理->Global Tool Configuration

配置jdk安装路径,git可执行路径(默认不用配置git),maven安装路径,并且都将自动安装选项取消。


下面真正的从创建项目到构建发布,还需要一些配置。

三、构建项目并发布

1、新建任务,maven项目webapp;


接着配置源码管理,这里需要配置一个远程gitserver上的项目仓库地址,可以使github,也可以是公司内部的git服务器上的项目仓库地址。


2、配置构建策略;

这里就是构建成功之后要做的事情,比如是要将打包之后的jar通过ssh登录远程机器的方式部署到远程服务器,并执行服务器上的脚本deploy.sh来启动服务。


3、开始构建。

	

点击立即构建之后,可以在左侧Build History看到一个正在构建的记录,还有进度条,这里可以通过查看console output,看构建输出日志。


构建日志:

构建成功:


远程发布并启动程序成功。

  1. SSH: Connecting from host [server]  
  2. SSH: Connecting with configuration [node01] ...  
  3. channel stopped  
  4. SSH: EXEC: STDOUT/STDERR from command [/root/deploy.sh] ...  
  5. Archive:  /root/webapp-0.0.1-SNAPSHOT-bin.zip  
  6.    creating: webapp-0.0.1-SNAPSHOT/  
  7.    creating: webapp-0.0.1-SNAPSHOT/lib/  
  8.  extracting: webapp-0.0.1-SNAPSHOT/lib/test-jetty-servlet-8.1.0.RC5.jar    
  9.  extracting: webapp-0.0.1-SNAPSHOT/lib/jetty-webapp-8.1.0.RC5.jar    
  10.  extracting: webapp-0.0.1-SNAPSHOT/lib/jetty-xml-8.1.0.RC5.jar    
  11.  extracting: webapp-0.0.1-SNAPSHOT/lib/jetty-util-8.1.0.RC5.jar    
  12.  extracting: webapp-0.0.1-SNAPSHOT/lib/jetty-servlet-8.1.0.RC5.jar    
  13.  extracting: webapp-0.0.1-SNAPSHOT/lib/jetty-security-8.1.0.RC5.jar    
  14.  extracting: webapp-0.0.1-SNAPSHOT/lib/jetty-server-8.1.0.RC5.jar    
  15.  extracting: webapp-0.0.1-SNAPSHOT/lib/servlet-api-3.0.20100224.jar    
  16.  extracting: webapp-0.0.1-SNAPSHOT/lib/jetty-continuation-8.1.0.RC5.jar    
  17.  extracting: webapp-0.0.1-SNAPSHOT/lib/jetty-http-8.1.0.RC5.jar    
  18.  extracting: webapp-0.0.1-SNAPSHOT/lib/jetty-io-8.1.0.RC5.jar    
  19.  extracting: webapp-0.0.1-SNAPSHOT/lib/log4j-1.2.17.jar    
  20.  extracting: webapp-0.0.1-SNAPSHOT/lib/slf4j-log4j12-1.7.12.jar    
  21.  extracting: webapp-0.0.1-SNAPSHOT/lib/slf4j-api-1.7.12.jar    
  22.  extracting: webapp-0.0.1-SNAPSHOT/lib/spring-beans-4.2.0.RELEASE.jar    
  23.  extracting: webapp-0.0.1-SNAPSHOT/lib/spring-core-4.2.0.RELEASE.jar    
  24.  extracting: webapp-0.0.1-SNAPSHOT/lib/commons-logging-1.2.jar    
  25.  extracting: webapp-0.0.1-SNAPSHOT/lib/spring-context-4.2.0.RELEASE.jar    
  26.  extracting: webapp-0.0.1-SNAPSHOT/lib/spring-aop-4.2.0.RELEASE.jar    
  27.  extracting: webapp-0.0.1-SNAPSHOT/lib/aopalliance-1.0.jar    
  28.  extracting: webapp-0.0.1-SNAPSHOT/lib/spring-expression-4.2.0.RELEASE.jar    
  29.  extracting: webapp-0.0.1-SNAPSHOT/lib/webapp-0.0.1-SNAPSHOT.jar    
  30.    creating: webapp-0.0.1-SNAPSHOT/bin/  
  31.   inflating: webapp-0.0.1-SNAPSHOT/bin/app.sh    
  32.    creating: webapp-0.0.1-SNAPSHOT/conf/  
  33.   inflating: webapp-0.0.1-SNAPSHOT/conf/applicationContext.xml    
  34.   inflating: webapp-0.0.1-SNAPSHOT/conf/log4j.xml    
  35. PID:   
  36. /root/webapp-0.0.1-SNAPSHOT/conf:/root/webapp-0.0.1-SNAPSHOT/lib/aopalliance-1.0.jar:/root/webapp-0.0.1-SNAPSHOT/lib/commons-logging-1.2.jar:/root/webapp-0.0.1-SNAPSHOT/lib/jetty-continuation-8.1.0.RC5.jar:/root/webapp-0.0.1-SNAPSHOT/lib/jetty-http-8.1.0.RC5.jar:/root/webapp-0.0.1-SNAPSHOT/lib/jetty-io-8.1.0.RC5.jar:/root/webapp-0.0.1-SNAPSHOT/lib/jetty-security-8.1.0.RC5.jar:/root/webapp-0.0.1-SNAPSHOT/lib/jetty-server-8.1.0.RC5.jar:/root/webapp-0.0.1-SNAPSHOT/lib/jetty-servlet-8.1.0.RC5.jar:/root/webapp-0.0.1-SNAPSHOT/lib/jetty-util-8.1.0.RC5.jar:/root/webapp-0.0.1-SNAPSHOT/lib/jetty-webapp-8.1.0.RC5.jar:/root/webapp-0.0.1-SNAPSHOT/lib/jetty-xml-8.1.0.RC5.jar:/root/webapp-0.0.1-SNAPSHOT/lib/log4j-1.2.17.jar:/root/webapp-0.0.1-SNAPSHOT/lib/servlet-api-3.0.20100224.jar:/root/webapp-0.0.1-SNAPSHOT/lib/slf4j-api-1.7.12.jar:/root/webapp-0.0.1-SNAPSHOT/lib/slf4j-log4j12-1.7.12.jar:/root/webapp-0.0.1-SNAPSHOT/lib/spring-aop-4.2.0.RELEASE.jar:/root/webapp-0.0.1-SNAPSHOT/lib/spring-beans-4.2.0.RELEASE.jar:/root/webapp-0.0.1-SNAPSHOT/lib/spring-context-4.2.0.RELEASE.jar:/root/webapp-0.0.1-SNAPSHOT/lib/spring-core-4.2.0.RELEASE.jar:/root/webapp-0.0.1-SNAPSHOT/lib/spring-expression-4.2.0.RELEASE.jar:/root/webapp-0.0.1-SNAPSHOT/lib/test-jetty-servlet-8.1.0.RC5.jar:/root/webapp-0.0.1-SNAPSHOT/lib/webapp-0.0.1-SNAPSHOT.jar  
  37. starting...\c  
  38. 2896  
  39. ok  
  40. SSH: EXEC: completed after 1,204 ms  
  41. SSH: Disconnecting configuration [node01] ...  
  42. SSH: Transferred 1 file(s)  
  43. Finished: SUCCESS  

总结:

        整个过程,前面的安装和配置占了大部分时间,这是从无到有的一个过程,所以很繁琐,但是后续的构建项目,是很快的,这就是持续集成的好处,将人的工作由工具来完成,可以减少出错的概率,提高效率。

        另外,这还是没有集成代码review的部分。

 
Centos+Jenkins+Maven+Git 将生成的JAR部署到远程服务器上 2、Goals and options,目标选项中输入打包要执行的maven命令,输入clean package -Dmaven.test.skip=true(先清理之前的包,并跳过测试打包,这里可以打war包或jar包,存放在target目录下)4、Remote Directory:远程服务器上要部署包存放的位置(这里可以不填,在Jenkins任务的配置中填写也行,个人建议在任务的配置中填写,因为一个服务器可能部署多个包到多个位置)1、Root POM,输入POM的根路径,根据项目的实际路径填写; 阅读详情

相关推荐

搭建Jenkins实现远程部署Java程序到云服务器

本文档将指导您在 Ubuntu 24 测试服务器上从零开始安装和配置 Jenkins,用于部署到测试环境和 AWS 生产环境。

m0_61492461的博客 706

自动化部署jenkins

自己实现的一个自动化部署 1.在jenkins中,在系统配置中添加ssh 2.创建一个maven项目 3.选择相关信息 4.上传shell脚本到服务器 5.给shell脚本添加执行权限 6.启动构件 给shell脚本添加执行权限 调试过程的主要信息 正常情况: Waiting for Jenkins to finish collecting data [JENKINS] Archiving /v...

y41992910的博客 3424

Jenkins-打包部署远程服务器或Docker

安装配置 maven3.6.0 jdk1.8.181 gitlab jenkins docker 在此之前,各位看官可以移步参考下《Docker-安装Jenkins容器》《Jenkins-基础环境配置》 开工干活 首先,我们先创建个文件夹,给项目分个组嘛 创建好文件夹后打开,来创建个maven项目,选择构建一个多配置项目(当然,选择构建一个maven项目也行),给它起个名 一般默认安装...

博观约取 4347

Jenkins 持续构建的使用

现在 项目的基本环境是:eclipse (Version: Indigo Service Release 2)+ JDK 1.6+CVS+Maven(3.1.0)+Nexus+Jenkins eclipse 用于 开发 java 程序的 IDE。 JDK 用于提供java 程序的基本类库和运行环境。 CVS 提供程序代码的版本控制。 Maven 用于提供java web 项目依赖包的管理。

java 3万+

Jenkins安装及自动部署Maven项目

一、环境配置 OS版本 [root@VM_0_11_centos /]# rpm -qa | grep centos-release centos-release-7-4.1708.el7.centos.x86_64 Java版本 [root@VM_0_11_centos /]# java -version openjdk version "1.8.0_181" OpenJ...

Nico专栏 3万+

jenkins自动化构建部署到多个服务器

title: jenkins自动化构建部署到多个服务器 date: 2019-05-12 15:12:42 categories: 工具 tags: jenkins jenkins下载与安装 jenkins是一款持续集成的软件,最开始想用这个软件进行项目的自动化构建部署,是由实验室的项目有三个版本,本地需要一套,测试要一套,交付维护需要一套,每次修改了代码后,都需要打成war包,然后通过一...

weixin_38950807的博客 1万+

记录在jenkins中自动部署maven项目时碰到的一些问题

主要是再使用jenkins构建部署maven项目时遇到的报错的解决方案

一枚爱钻研的小开发 1万+

jenkins+maven+gitlab自动化构建打包、部署

Jenkins自动化部署实现原理环境准备1、jenkins已经安装好2、gitlab已经安装好。

a13568hki的博客 2787

Jenkins部署分支报Finished: UNSTABLE的问题解决

Jenkins部署分支报Finished: UNSTABLE的问题解决

qq_38472574的博客 804

在AVP28335(兼容德州仪器TMS320-28335) 上实现ModbusSlaveRTU-485源码及注释。

今天先把题目先给出来, 在近两天会把源码 (含详细注释 )及部署、测试结果给出来, 希望能给大家帮助。(全免费 我有点缺德,断了别人的一个财路)。

FOOLCODE的专栏 642

如何将rvt(BIM)转换为点云格式

1、为什么将BIM转换为点云格式? 如何使设计BIM与真实场景进行配准,分析在建、未建、已建构建的情况,真实场景是通过点云生产的,和点云配准需要相同的格式。 2、如何转换? 实用工具revit,转换过程如下图,这样就可以转换成三角网格形式。 3、FBX还需要进行一次转换,即转换成点云常用的类型,如bin\ply\pcd等格式。 需要软件cloudcompare.exe,软件下载地址百度云 链接:https://pan.baidu.com/s/1pflcKNc04loBnS1yKR39hw 提取码:obaf

self_Name_的博客 4489

【云原生】gitlab+jenkins+sshserver+shell自动化部署发布springboot项目实战03(2022)

实战经验

donghua的记录空间 473

优惠券管理

(请设计一个优惠券兑换码生成方案,可以支持20亿以上的唯一兑换码,兑换码长度不超过10,只能包含字母数字,并且要保证生成和校验算法的高效)最后把签名值的后14位、新鲜值(4位)、自增序列(32位)拼接,得到一个50位二进制数,然后与一个较大的质数做异或运算加以混淆,再基于Base32或Base64转码,即可的对兑换码。现在,就剩下防止爆刷了。自增id从1增加到Integer的最大值,可以达到40亿以上个数字,而占用的字节仅仅4个字节,也就是32个bit位,距离50个bit位的限制还有很大的剩余,符合要求!

qq_36312661的博客 2204

Jenkins安装使用教程

使用jenkins完成了以下几个步骤(1)从代码仓库中拉取一个java工程,在本地打包制作成镜像文件,推送到远端harbor仓库中(2)把远端仓库中的该镜像文件推送到远端应用服务器中,并基于该镜像运行一个容器。

weixin_43909159的博客 946

FDTD Solutions-入射波长模式

经常在文献中看到仿真光源使用TM/TE模式,这个确定是十分必要的,决定了仿真结果。 但是也不能局限于选择TM/TE,因为不同领域、不同软件之间的使用习惯和命名可能不同。并且在现代光波导器件中,几乎全部 都是混合模式,或者称之为quasi-TE(准TE模式)和quasi-TM(准TM模式),多数情况下都简称为TE模式和TM模式。要知道 到底是TE模式还是TM模式,需要查看其电场的主分量(即振幅...

HECHUANWANG的博客 1万+

S7-200SMART 的运动控制(一)向导配置具体步骤(图文)

S7-200SMART 的运动控制(一)向导配置具体步骤(图文)

Robot_PLC_HMI_Automation 3849

Jenkins&Maven部署Java应用操作手册

Jenkins部署Java应用操作手册Jenkins安装Jenkins配置插件安装全局工具配置Maven 安装JDK 安装系统设置SSH Server构建任务新建任务General源码管理构建环境构建Jar构建War构建后操作Send build artifacts over SSH Jenkins安装 Jenkins版本:Jenkins ver. 2.190.1 Jenkins配置 插件安装 P...

李小鹏的博客 426

大模型微调部署实战及类GPT工具的高效使用

本文主要介绍了专栏《大模型微调部署实战及类GPT工具的高效使用》的核心内容,希望对使用大语言模型的同学们有所帮助。 文章目录 1. 前言 2. 专栏亮点 3. 你的收获 4. 详细目录

herosunly的博客 22万+

jenkins部署远程服务器(jenkins+svn+maven)

最近公司给了个任务,就是用jenkins做工程的部署工具,用jenkins自动化部署,这样测试人员就不用每次要等开发人员部署好了才能测试,用jenkins测试人员自己登陆上去就可以自己部署项目了。过程简单,傻瓜化,省去重复劳动~ 瞎扯了一下,下面进入正题。 1、首先你得有个jenkins部署到服务器上面。关于jenkins如何安装部署百度一大堆,安装很简单,这里就不多讲了。 2、我这边jen

序猿 1万+

【100%通过率】华为od统一考试B卷【贪吃蛇】Python 实现

贪吃蛇是一个经典游戏,蛇的身体由若干方格连接而成,身体随蛇头移动。蛇头触碰到食物时,蛇的长度会增加一格。蛇头和身体的任一方格或者游戏版图边界碰撞时,游戏结束。 下面让我们来完成贪吃蛇游戏的模拟。给定一个N*M的数组arr,代表N*M个方格组成的版图,贪吃蛇每次移动一个方格。若arr[i][j] == ‘H’,表示该方格为贪吃蛇的起始位置;若arr[i][j] == ‘F’,表示该方格为食物,若arr[i][j] == ‘E’,表示该方格为空格。贪吃蛇初始长度为1,初始移动方向为向左。

MISAYAONE的博客 1204

2️⃣ Coze创建智能体教学(2025年全新版本)

扣子平台提供强大支持,可将智能体轻松集成至各类社交平台,使智能体得以服务更为庞大的用户群体。当下支持集成的平台如下:​1️⃣豆包:作为聚焦 AI 内容创作的平台,非常适合发布充满创意、娱乐性强的智能体。​2️⃣飞书:适合发布用于办公协作的智能体,助力团队提升工作效率。​3️⃣微信:借助公众号或小程序的形式,能够服务海量微信用户。​4️⃣抖音:适合发布与短视频相关的智能体,为用户提供创意与娱乐服务。​

李同学Lino的博客 4576

jenkins部署 java项目到远程 windows服务器

Jenkins部署windows服务器 踩坑

qq_33472553的博客 5731

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Linux下使用Jenkins+Git+Maven+码云搭建自动化部署,可远程部署jar和war

写在前面:       本教程为2台全新阿里云服务器CentOS 6.8(以下称搭建Jenkins的为第1台服务器,可访问项目工程的为第2台服务器,以免混淆,没有说明的都是在第1台服务器root目录上操作,记得添加端口安全组和关闭防火墙),git仓库使用的是码云。       整个教程包括了jdk、tomcat、Git、Maven、Maven私服、Jenkins、zookeeper等的搭建,全部代...

zhou870498的博客 8252

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

【云原生】jenkins部署docker镜像到远程服务器

说到底其实腾讯的coding底层使用的也是jenkins进行集成部署的,只是coding进行了更多元化的实现,新增了许多其他功能。创建一个文件夹jenkins(文件位置自己任意,博主放在了/usr/local下),用于将jenkins安装文件映射到宿主机上,方便后续操作。这里使用docker安装jenkins,方便又快捷,首先服务器中已经安装docker环境。注博主已经安装了所有在已安装中,未安装的选择可选插件进行搜索安装,访问成功后,选择第一个推荐安装方式(安装时间较长,请耐心等待).........

RemainderTime 3037

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Jenkins部署Maven项目

Jenkins是一个开源自动化服务器.主要用于监控,发布等持续重复的工作。 1.部署流程 简介:Jenkins负责拉取新代码,并编译打好包,然后推送到目标服务器响应目录下启动。 2.环境准备 CentOS服务器2台 192.168.3.7(部署了Jenkins服务) 192.168.3.11(需要发布到这台上启动) 3.全局配置 3.1JDK配置 3.2GIT配置 3.3Maven配置 4.项目部署 4.1新建任务 4.2任务配置 4.2.1公共变量 SERVER_NAME=spring-boot-he

程序员小强的博客 6583
上一篇: jmeter 接口自动化测试方案一 (EXCEL数据驱动版本)
下一篇: jmeter将上一个接口返回值作为下一个接口的请求参数
java2013liu
博客等级 码龄14年 141粉丝 61原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值