jenkins部署_Jenkins:部署JEE工件

jenkins部署

随着持续集成持续交付的出现 ,我们的构建被分为不同的步骤,以创建部署管道。 这些步骤中的一些步骤可以是例如编译和运行快速测试,运行慢速测试,运行自动验收测试或发布应用程序等。

部署流程的最后步骤意味着将我们的产品(如果是JEE项目,则是战争耳朵 )部署到类似生产的环境,用于UAT或发布产品时部署到生产系统。
在本文中,我们将了解如何配置Jenkins来正确管理Java Enterprise Application的部署。

要做的就是创建应用程序,在这种情况下,在Java中一个非常简单的Web应用程序的第一件事情(其实只有一个JSP它打印一个Hello World!消息)和mavenize它来创建一个war文件(bar.war)时, 目标已执行。

然后,我们需要创建一个Jenkins作业(称为bar-web ),该作业负责编译和运行单元测试。

完成此工作后,将进行其他工作,例如运行集成测试,运行更多测试,静态代码分析(即代码质量)或将工件上传到工件存储库,但此处不会显示。
最后,最后一步意味着将先前生成的代码部署到暂存环境(例如,用于运行用户验收测试 ),并在关键用户同意后将其部署到生产环境。
因此,让我们看看如何在Jenkins中创建这些最终步骤。 请注意,在所有这些步骤中都必须使用在先前步骤中创建的二进制文件(在本例中为bar-web )。 这是因为两个原因,第一个是您的部署管道应尽可能快地运行,并且显然在每个步骤中编译代码并不是获得代码的最佳方法,第二个原因是每次您编译源代码时,增加了不被编译为先前步骤的来源的机会。 为了实现此目标,我们可以遵循两种策略,第一种是将二进制文件上传到工件存储库(例如NexusArtifactory ),然后在每个作业中从那里获取。 第二个是使用复制工件 Jenkins插件来获取上一步生成的二进制文件。

让我们看看如何为第一种方法配置Jenkins

使用工件存储库方法,要求您从存储库下载我们要部署的版本,然后将其部署到外部环境; 在我们的案例中,部署到Web服务器。 所有这些步骤都是通过使用maven-cargo-plugin完成的

<build><plugins><plugin><groupId>org.codehaus.cargo<groupId><artifactId>cargo-maven2-plugin<artifactId><version>1.0<version><!-- Container configuration --><container><containerId>tomcat6x<containerId><type>remote<type><container><configuration>          <type>runtime<type><properties><cargo.remote.username>admin<cargo.remote.username><cargo.remote.password><cargo.remote.password><cargo.tomcat.manager.url>http:localhost:8888manager<cargo.tomcat.manager.url><properties><configuration><deployer><deployables><deployable><groupId>com.lordofthejars.bar<groupId><artifactId>bar-web<artifactId><type>war<type><deployable><deployables><deployer><plugin><plugins><build><dependencies><dependency><groupId>com.lordofthejars.bar<groupId><artifactId>bar-web<artifactId><type>war<type><version>${target.version}<version><dependency><dependencies>

然后,我们只需要创建一个名为bar-to-staging的新Jenkins作业即可运行cargo:redeploy Maven目标,而Cargo插件将负责将bar-web部署到Web服务器。

这种方法具有一个优点和一个缺点。 主要优点是您不必局限于Jenkins ,可以单独使用Maven ,也可以使用任何其他支持Maven的 CI 。 主要缺点是依赖于artefacts存储库,此计划计划了一个新问题,部署管道涉及许多步骤,并且在这些步骤之间(通常,如果您正在构建快照版本),可以将新的artefact上传到具有相同版本的artefacts存储库,并在管道执行过程中使用它。 当然,可以通过在人工制品存储库中管理权限来避免这种情况。

另一种方法是使用Jenkins插件,称为copy-artifact-plugin 。 在这种情况下, Jenkins充当人工制品存储库,因此,在不涉及任何外部存储库的情况下,将在下一步中使用在上一步中创建的工件。 使用这种方法,我们不能使用maven-cargo-plugin ,但是可以将deploy-jenkins-plugincopy-artifacts-plugin结合使用。

因此,让我们看看如何实现这种方法。

首先是创建一个Jenkins 构建作业bar-web ),该作业将创建war文件。 请注意,定义了两个Post-build动作 ,第一个是Archive the artifacts ,用于存储生成的文件,因此复制工件插件可以将它们复制到另一个工作空间。 另一个是“ 构建其他项目” ,在这种情况下,该项目调用一个作业,该作业负责将war文件部署到暂存目录( bar deploy-to-staging )。

接下来是create bar deploy-to-staging构建作业,其主要操作是将先前构建作业生成的war文件部署到Tomcat服务器。

对于第二个构建作业,您应该配置复制工件插件以将以前生成的文件复制到当前工作空间,因此在“ 构建”部分的“ 从另一个项目复制工件”部分中,我们设置了要从哪个复制作业复制工件(在本例中) bar-web )以及我们要复制的工件。 最后,在“构建后操作”部分中 ,我们必须配置应将哪个文件部署到Tomcatbar.web ),请记住该文件是以前的构建作业所编译和打包的,最后设置了Tomcat参数。 执行管道如下所示:

请注意,已添加了第三个构建作业 ,该作业war文件部署到生产服务器。

第二种方法是第一种方法的对立部分,您可以确保在管道的上一步中使用的伪像将在所有步骤中使用,但是您必须遵守Jenkins / Hudson的规定

因此,如果您要在人工制品存储库中创建策略,以便只有管道执行程序可以将人工制品上载到存储库,则第一种方法更好,但是如果您不使用外部人工制品存储库(按原样使用Jenkins ),则第二种方法是最好的方法是确保先前步骤中包装的人工制品不会被并行步骤修改。

将文件部署到服务器后,可以毫无问题地执行验收测试或UAT测试。

我希望现在我们可以安全,更好地解决部署流程的最后步骤。

参考:在One Jar To Rulem All博客中,我们的JCG合作伙伴 Alex Soto 与Jenkins一起部署JEE工件 。


翻译自: https://www.javacodegeeks.com/2012/09/jenkins-deploying-jee-artifacts.html

jenkins部署

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/353483.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2013年3月编程语言排行榜:有毒的Java

2013年3月12日&#xff0c;Tiobe公布了新一期编程语言排行榜。Java依旧是占据第一的位置&#xff0c;C语言紧随其后。值得注意的Objective-C持续发力&#xff0c;已经占到了第三的位置。咋一看榜单&#xff0c;前5条中C#下滑最快&#xff0c;从第3名下降到第五名。而其他语言都…

DHCP服务(dhcpd)

DHCP动态分配主机地址&#xff08;Dynamic Host Configuration Protocol&#xff09; 动态主机配置协议&#xff08;DHCP&#xff09;是一种基于UDP协议且仅限于在局域网内部使用的网络协议&#xff0c;主要用于大型的局域网环境或者存在较多移动办公设备的局域网环境中&#x…

基于Matlab/Simulink不平衡电网工况下级联H桥光伏并网逆变器仿真模型

本次更新的内容为级联H桥光伏并网逆变器相关的控制&#xff0c;后面会针对储能系统在级联H桥拓扑上的应用进行分享。由于传统发电造成的环境污染问题和光伏电池板价格持续创新低&#xff0c;太阳能从众多种类的可再生能源中拔地而起&#xff0c;因而光伏逆变器成为国内外学者和…

“速课小龙”项目冲刺3

第三天 日期&#xff1a;2018/6/15 一.今日完成任务情况及遇到的问题 姓名完成情况遇到的问题解决方法邓旭 通过对昨天的知识进行再学习&#xff0c;已经能进行文件上传。并且开始着手于出题模块。 今天着手只是模型的基础层搭建&#xff0c;所以难度相对较少。未有问题解决陈逸…

Java和Lagom的CQRS

我很高兴在Chicago Java User Group上进行了讨论&#xff0c;并讨论了Lagom如何实现CQRS&#xff08;命令查询责任隔离模式&#xff09;。 值得庆幸的是&#xff0c;有一个录音&#xff0c;我还把这些幻灯片发布在slideshare上 。 抽象&#xff1a; 一旦应用程序变得相当复杂…

怎么样开会才有效果?

SAP项目实施过程中&#xff0c;难免不了要开不少的会议&#xff0c;无论是最前期的选型&#xff0c;还是商谈&#xff0c;乃至后面上线评审都免不了将很多项目干系人聚在一起就出现的问题或大家关心的问题摆在台面上做探讨。但只要你开过大会议你就会知道很多时候开会纯粹是为了…

网络15软工个人作业5——软件工程总结

一、请回望开学时的第一次作业&#xff0c;你对于软件工程课程的想象 1. 对比开篇博客你对课程目标和期待&#xff0c;“希望通过实践锻炼&#xff0c;增强计算机专业的能力和就业竞争力”&#xff0c;对比目前的所学所练所得&#xff0c;在哪些方面达到了你的期待和目标&#…

dijkstra算法学习

dijkstra算法学习 一、最短路径 单源最短路径&#xff1a;计算源点到其他各顶点的最短路径的长度 全局最短路径&#xff1a;图中任意两点的最短路径 Dijkstra、Bellman-Ford、SPFA求单源最短路径 Floyed可以求全局最短路径&#xff0c;但是效率比较低 SPFA算法是Bellman-Ford算…

php定时任务(自己)

php定时任务&#xff08;自己&#xff09; 一、总结 一句话总结&#xff1a;可用php.exe连接php文件和bat文件&#xff0c;bat文件在计划任务中可以设置定时执行&#xff0c; 二、 1、php 2、bat E: "D:\software\code\phpStudy2018\PHPTutorial\php\php-5.4.45\php.exe&q…

楼天城 楼教主

楼天城 求助编辑百科名片 楼天城楼天城是杭州人&#xff0c;姚期智教授的得意门生&#xff0c;正是姚教授发现他的才能后把他引上了现在的研究方向&#xff0c;并大力举荐他参加国际学术会议和比赛。在网络上他被称为“楼教主”&#xff0c;清华同学则简称他“教主”。中文名&a…

jpa 与非jpa 结合_EasyCriteria –使用JPA标准的简便方法

jpa 与非jpa 结合今天&#xff0c;我们将看到有关此工具的信息&#xff0c;该工具使使用JPA Criteria更加容易。 使用该库的应用程序将在JPA实现中更加简洁&#xff0c;易于使用和可移植。 在本文的结尾&#xff0c;您将找到要下载的源代码。 什么是标准&#xff1f; 当前是创…

Python排序算法之快速排序

转自&#xff1a;https://www.cnblogs.com/AlwinXu/p/5424905.html 快速排序&#xff08;quickSort&#xff09; 快排的思想&#xff1a;首先任意选取一个数据&#xff08;通常选用数组的第一个数&#xff09;作为关键数据&#xff0c;然后将所有比它小的数都放到它前面&#x…

关于DP与背包

听说过动态规划&#xff08;DP&#xff09;的同学应该都知道有背包问题的存在。 首先我们来了解一下动态规划 基本思想&#xff1a; 动态规划算法通常用于求解具有某种最优性质的问题。在这类问题中&#xff0c; 可能会有很多可行解。没一个解都对应于一个值&#xff0c;我们希…

【从零开始搭建自己的.NET Core Api框架】(二)搭建项目的整体架构

系列目录 一. 创建项目并集成swagger 1.1 创建 1.2 完善 二. 搭建项目整体架构 三. 集成轻量级ORM框架——SqlSugar 3.1 搭建环境 3.2 实战篇&#xff1a;利用SqlSugar快速实现CRUD 3.3 生成实体类 四. 集成JWT授权验证 本来打算将搭建项目架构和集成SqlSugar放在一起讲的&…

zk 布局_ZK实际应用:样式和布局

zk 布局在先前的ZK in Action帖子中&#xff0c;我们使用ZK MVVM实现了CRUD功能 。 我们还快速浏览了一些样式代码&#xff0c;可能需要更多的解释。 在本文中&#xff0c;我们将介绍如何在ZK小部件上附加新CSS样式规则&#xff0c;以及如何覆盖现有样式。 我们还将介绍ZK中UI布…

使用Gradle禁止Java和Spring Boot Web应用程序中的FindBugs警告

如何在 Spring Boot和 Java应用程序中使用注释抑制FindBugs警告 如果您的构建由于FindBugs问题而中断&#xff0c;并且是假阳性&#xff0c;或者由于其他考虑而无法解决问题&#xff0c;则可以添加注释来忽略Findbugs警告。 更新您的Gradle依赖关系 您将需要在build.gradle文…

CUBA平台–用于快速应用程序开发的开源Java框架

传统上&#xff0c;自计算时代开始以来&#xff0c;企业软件开发自然面临着一个挑战&#xff0c;当时自然而然地&#xff0c;企业软件开发本应专注于解决实际的业务问题&#xff0c;但与此同时&#xff0c;开发人员必须在技术上花费大量时间和精力。解决方案的一面&#xff0c;…

C#与mongoDB初始环境搭建

mongoDB官网https://www.mongodb.com/ mongoDB默认安装路径(Windows x64平台) C:\Program Files\MongoDB\Server\3.4\bin mongoDB环境变量配置 启动mongoDB服务 > mongod -dbpath D:\mongodb > mongo Visual Studio引用mongoDB PM> install-package M…

java ee 的使用方法_改善Java EE生产支持技能的8种方法

java ee 的使用方法参与Java EE生产支持的每个人都知道这项工作可能很困难。 7/24寻呼机支持&#xff0c;多个事件和错误修复&#xff08;要定期处理&#xff09;&#xff0c;来自客户和管理团队的压力&#xff0c;要求它们尽快解决生产问题并防止再次发生。 在日常工作中&…

Tp3.1 文件上传到七牛云

TP3.1 中不支持Composer 就无法用composer 安装 下载历史的SDK https://github.com/qiniu/php-sdk/releases/tag/v7.0.8 下载下来放到 Think 目录下的Vendor下 进入代码 HTML的代码 <form id"upload" methodpost action"file" enctype"multipart/f…