十多年前,敏捷开发人员开始拥抱并促进测试驱动的开发和持续集成(CI)。利用这些技术,只要开发人员将源代码检查到源存储库中,我们就可以自动构建源代码,执行详尽的单元测试套件以确保应用程序正常运行。许多测试驱动的开发人员也开始在辅助CI流程中进行集成测试和性能测试。

通过持续集成,我们可以比前几年更快地发现错误并更快地发布代码。毫不夸张地说,CI驯服了构建和部署周期的“构建”方面。如今,许多开发团队已经从CI转移到CD,CD代表持续交付或持续部署。无论使用哪种名称,CD都是将软件从代码检入转移到暂存甚至生产部署的过程。

这部分开源Java项目引入了与领先的CI / CD自动化服务器Jenkins的持续集成。我们将首先概述CI和CD过程,然后使用Maven和Jenkins设置Java Web项目。这里,将学习如何使用JUnit在Jenkins中构建和对项目进行单元测试,以及如何对构建失败进行故障排除。

CI / CD简介

在连续的集成过程中,可以自动签出,构建,测试各种方式将已检入源代码存储库中的代码,然后发布到存储库中。为了使连续集成正常工作,您需要像Jenkins这样的CI服务器,它可以监视源代码存储库中的新更改并以可配置的方式做出响应。

以使用Maven构建的Java应用程序为例。在检测到代码更改时,您的CI服务器可以通过执行来响应mvn clean install。在典型的Maven构建配置中,它将作为构建命令的一部分执行一组新的单元测试。在构建源代码时,服务器可以执行任意数量的其他操作:

  • 提交的代码通过单元测试后,将功能分支合并回主分支或主分支。

  • 执行静态代码分析,例如代码覆盖率,代码复杂性,常见错误检查等。

  • 将构建工件发布到存储库,例如Artifactory或Sonatype Nexus

  • 将您的应用程序部署到集成测试环境

  • 执行集成测试

  • 将您的应用程序部署到性能测试环境

  • 对您的应用程序执行负载测试

  • 将您的应用程序部署到用户验收测试环境(UAT)

  • 将您的应用程序部署到生产环境

这些步骤是您可以在CI / CD流程中执行的所有类型的活动。CI通常包含开发生命周期的构建和测试阶段,而CD则将该过程扩展到将构建工件部署到服务器以进行测试。在某些环境中,CD一直到生产。

连续集成通常使用Jenkins,Bamboo或TeamCity之类的工具完成,该工具将构建步骤编排到集成管道中。Jenkins可能是最受欢迎的CI / CD产品,它与Docker搭配得很好。

Jenkins简介

Jenkins是一个基于Java开发的开源软件项目,用于支持构建、部署和自动化任何项目。在实际开发中,通常将他作为项目的持续集成、部署工具来使用,其使用场景可以通过一张图来表达,如图所示。

在图中,Jenkins进行项目集成管理的流程如下。

(1)开发人员将更改后的代码提交到代码仓库中(如GitHub);

(2)持续集成工具Jenkins会定期(或人工手动)从代码仓库拉取指定项目;

(3)Jenkins工具会根据具体配置,自动化打包、构建镜像、推送镜像,并最终生成Docker容器来启动服务,形成对应的测试环境;

(4)测试人员会在对应的测试环境下测试Jenkins自动化集成、部署的服务;

(5)当项目测试成功后,可以使用Jenkins工具将测试成功的项目自动构建到发布环境下,也可以人工手动部署到发布环境下。

当使用Jenkins后,无需人工操作就可以自动化完成项目的持续集成和部署,这对于实际项目开发来说,有着极大的好处。

Jenkins安装

Jenkins官网提供了多种安装方式,包括基于Java的war包,Linux、MacOS和Windows系统等方式。这里我们选择比较通用的war包方式为例,在集群管理节点manager1机器上安装一个Jenkins工具(由于Jenkins是由java开发的,所以在安装Jenkins之前要确保已安装了JDK并配置了系统环境),具体步骤如下。

1.下载Jenkins

在浏览器中输入Jenkins官网地址https://jenkins.io/download/访问其下载页面,选中页面中Long-term Support (LTS,长期支持)版本最下方的Generic java package(.war),进行Jenkins的war包下载,如图所示。

2.启动Jenkins服务

将下载好的jenkins.war放到manager1机器中的某个目录下,直接使用如下指令即可启动Jenkins服务。

$ java -jar jenkins.war --httpPort=49001

执行上述指令后,就会在Linux系统上通过war包的方式启动Jenkins服务。

需要注意的是,Jenkins内部默认配置的端口是8080(这与开发中很多端口有冲突),所以我们在启动Jenkins服务时,使用--httpPort参数指定了服务启动的端口为49001。

3.Jenkins初始化安装

通过浏览器访问地址http://192.168.197.143:49001就可以正式访问Jenkins服务,在首次安装访问Jenkins时,会涉及到Jenkins的初始化安装,具体说明如下。

(1)初始化认证密码

在Jenkins首次启动并访问时需要一个认证密码,该密码在Jenkins初次启动时会自动生成并存储在jenkins目录的某个文件中(初始化页面会有提示,本示例中的初始化密码存储位置在/home/manager1/.jenkins/secrets/initialAdminPassword文件中),输入指定密码后,单击右下角的“Continue”按钮即可,其效果如图所示。

(2)初始化插件安装

输入初始化认证密码后,会进入一个Jenkins插件定制安装界面,这也是首次启动访问Jenkins时会出现的页面,页面中会提供Install suggested plugins(安装建议插件)和Select plugins to install(自行选择插件安装)两种方式,如图所示。

通常情况下,都会选择左侧的Install suggested plugins进行初始化插件安装,然后Jenkins服务就会进入插件安装过程。

(3)创建管理员用户

当完成上一步初始化插件安装后,页面会自动跳转到一个Create First Admin User(创建管理员用户)的页面,需要输入管理员信息,其效果如图所示。

在该页面编辑好管理员信息后,单击右下角的“Save and Finish”按钮,就完成了Jenkins的初始化操作,然后在后续页面中单击“Starg using Jenkins”按钮就可以正式进入Jenkins主页面,其效果如图所示。

到达该主页面后,就表示Jenkins安装及初始化完毕。

10.1.1 Jenkins的集成插件配置

Jenkins安装完成后,如果想要完成项目的自动化持续集成和部署工作,那么就需要针对与项目有关的软件进行安装和配置,该配置过程具体如下。

1.安装Maven插件

因为我们之前创建的微服务是Maven项目,在使用Jenkins时也需要创建一个Maven项目进行持续集成,所以这里需要配置Maven插件。

依次单击主页面的“系统管理”à“插件管理”à“可选插件”面板,然后在右侧搜索框输入“Maven Integration plugin”关键字进行搜索。搜索出结果后,选中该插件,并单击下方的“直接安装”按钮即可进行Maven插件安装,其效果如图所示。

2.系统全局插件配置

完成所需插件的安装后,必须在Jenkins上进行全局插件配置,这样才能让Jenkins与其他软件关联工作,这里配置的全局插件主要有JDK(项目编译工具)、Git(代码仓库GitHub管理工具)、Maven(项目打包工具)和Docker(项目部署工具)。

依次单击主页面的“系统管理”=>“ Global Tool Configuration”面板,进入全局插件配置页面,然后根据整个项目从拉取代码到部署服务所需要的工具进行配置,各个插件工具的配置效果分别如图所示。

需要说明的是,由于Jenkins中对Git已经有了默认配置,所以我们不需要做任何修改(当然也可以参考其他工具的配置方式配置自定义安装的Git工具);JDK和Maven配置的路径则是10.3.1小节中搭建基础环境时对应的路径;Docker的路径也是manager1机器上安装的Docker路径(可以通过whereis docker指令查看,默认配置路径为/usr/lib/docker)。这里所有工具的名称都可以自行定义。

完成全局工具配置后,单击左下角的“Save”按钮就会跳转到Jenkins主页面。至此,Jenkins中的插件配置就已经完成。

服务自动化部署

完成Jenkins的安装配置后,就可以使用Jenkins工具来自动化集成、部署微服务项目了,其具体使用方式如下。

1.构建新任务

在Jenkins主页面,单击左侧的“新建”按钮,将会跳转到任务构建界面,其效果如图所示。

在任务构建页面中填写需要自动化集成、部署的任务名称,然后选中“构建一个maven项目”,最后单击“OK”按钮就会自动跳转到该任务配置页面,如图所示。

从图中框选部分内容可以看出,想要使用Jenkins完成自动化构建、部署工作,还需要对构建任务分步骤进行配置,其主要配置项的配置步骤如下。

(1)配置源码仓库地址

使用Jenkins自动构建任务,就需要从源码仓库(这里使用的是GitHub)自动拉取此次构建任务的项目源码。在“源码管理”中选择“Git”,并在“Repository URL”中输入需要部署的项目所在的GitHub源码地址,如图所示。

(2)构建触发器

构建触发器就是构建任务时的触发规则,用来规定什么时候触发任务的构建。其具体情形如图所示。

从图可以看出,Jenkins构建触发器提供了多种构建规则,这里针对其中常用的3种构建规则进行介绍,具体如下。

l Build periodically:表示在某个时间点进行自动任务构建,比如“H 2 * * *”表示每天凌晨2点开始执行项目构建(不管项目是否更新);

l Poll SCM:表示每隔一段时间会自动检查更新进行任务构建,比如“*/10 * * * *”表示每10分钟开始检查源码,如果有更新就自动执行构建。

l 当默认没有进行构建触发器配置时,我们可以在对应的任务面板中选择“立即构建”按钮,可以随时进行手工触发任务构建。

(3)服务发布配置

任务构建完成后,可以配置服务部署指令。此示例中,我们将会自动把整个服务项目自动部署到集群环境下,因此这里就需要进行服务发布配置,其效果如图所示。

在Post Steps(服务发布配置)页面,选择“Add post-build step”下拉列表中的“Execute shell”选项,并在命令框中输入需要发布服务的shell指令。为了确保集群环境下服务的正常部署,需要确认集群已经开启并且已经预先自定义好指定网段的网络,同时还要在集群管理节点进行私有仓库登录认证。

完成上述所有步骤的配置后,单击左下角的“保存”按钮就会跳转到该任务主页面,效果如图所示。

另外,关于构建任务配置界面中的其他步骤,如果有需要,还可以进行相应的配置,这里就不作详细介绍了。

2.自动化部署服务

在任务构建配置页面的构建触发器配置中,如果配置了定期自动构建服务,就不需要再做任何工作了,该构建任务会在指定的触发规则下进行任务的自动构建和部署工作。

为了演示Jenkins自动构建、部署服务的效果,单击任务主界面左侧的“立即构建”按钮后,会触发一次立即构建项目的动作,然后整个服务就会进入自动构建过程。此时我们可以单击“构建历史”中的倒三角,选择“Console Output”选项来查看整个构建过程的输出信息,如图所示。

选择进入任务对应的Console Output输出信息页面后,效果如图所示。

该任务初次自动化构建过程会需要一定的时间,当整个任务构建并发布完成后,Console Output控制台就会有构建成功或者失败的提示信息。

最终Console Output控制台打印出“Finished:SUCCESS”信息,这就表明通过Jenkins自动集成的服务项目已构建并部署成功。

glassfish启动后不能进入部署页面_使用Jenkins实现项目持续集成部署相关推荐

  1. Docker+Jenkins+Harbor+Rancher持续集成部署分布式项目

    目录 一.Docker篇 1.Docker 概述 2.Docker 平台 3.我可以使用 Docker 做什么? 3.1.快速.一致地交付应用程序 3.2.响应式部署和扩展 3.3.在相同硬件上运行更 ...

  2. 【测试开发】的Devops持续集成部署体系之Jenkins持续集成和持续部署基础应用

    目录 [一]:Jenkins 持续集成安装及使用简介 一.前言 二.初始化 Jenkins 插件和管理员用户 2.1 进入如下页面,输入上面出现的口令 2.2 进入选择安装插件的页面后,可以选择安装社 ...

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

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

  4. Centos+Gitlab+Jenkins 针对.NET项目持续集成环境搭建和自动化部署

    目录 一.前言 二.系统环境 三.Gitlab安装 3.1 安装依赖软件 3.2 开启postfix 3.3 安装Gitlab 3.4 设置服务器IP和端口 3.5 重置并启动GitLab 3.6 浏 ...

  5. docker运行jar包_Jenkins+Docker+Springboot单机版持续集成部署

    Jenkins+Docker+SpringBoot持续集成流程说明 安装配置jenkins 安装jenkins可直接官网下载对应的jar包直接运行,也可使用docker运行,下载完后直接运行,并下载d ...

  6. Jenkins持续集成部署工具

    目录 1 持续集成 1.1 软件开发生命周期 1.2 软件开发瀑布模型 1.3 软件的敏捷开发 1.4 什么是持续集成 1.5 持续集成的好处 2 Jenkins安装配置 2.1 Jenkins介绍 ...

  7. Jenkins+Svn搭建持续集成环境和自动部署

    Jenkins+Svn搭建持续集成环境和自动部署 一.环境说明 centos 6.8     ip:192.168.1.26 二.运行环境配置 1.安装java环境,下载jdk并放在/usr/loca ...

  8. 5分钟快速掌握Jenkins,项目一键自动部署

    5分钟快速掌握Jenkins,项目一键自动部署 目录 前言 Jenkins是什么? Jenkins环境安装搭建 Jenkins基本使用介绍 Jenkins快速构建项目,项目自动化部署 学习总结 前言 ...

  9. k8s和harbor的集成_爱威尔-基于kubernetes集群的项目持续集成(gitlab+harbor+Jenkins)安装...

    这个算是基于kubernetes集群的项目持续集成的前导篇,先把这用环境搭建好我们后面就可以专注做基于k8s的docker化项目持续集成了. gitlab安装 https://about.gitlab ...

  10. 持续集成与持续部署(一)——核心概念之持续集成、持续交付、持续部署

    持续集成与持续部署(一)--核心概念之持续集成.持续交付.持续部署 5-4 持续集成与持续部署 课程介绍 那些大厂们,天天DevOps.持续集成的?到底在讲些什么?这堂课来给你揭开持续集成与持续部署的 ...

最新文章

  1. 链表LinkedList的Java实现
  2. Java中获取完整的url
  3. 数据库建表赋予权限语句
  4. P1115 最大子段和(python3实现)
  5. 组合数学 —— 基本计数原理
  6. Android的布局
  7. 带中文字库的12864LCD显示程序
  8. java工作笔记018---java中BigDecimal小数位数的四舍五入等操作
  9. SpringBoot-HBase
  10. php excel 导入大量,用phpExcelReader不能导入大量数据解决办法
  11. SIP协议搭建电信级VOIP/IM运营平台--架构篇(sip集群)
  12. 干货| 机器学习模型与算法最全分类汇总!
  13. c# RoundUp函数
  14. [转]TIF图像数据结构之研究
  15. ELK集群状态yellow状态解决及解决思路
  16. Dell PowerEdge R740xd解析:服务器只看参数那就错了
  17. 互联网运营面试题_网站运营面试常见问题和答案
  18. 原来普洱茶还有预防头痛,减轻体重,缓解压力和失眠的作用,而且是年份久的普洱茶效果好
  19. spring的task和quartz的区别
  20. 网络通信技术--设置IP地址

热门文章

  1. Linux执行fastqc报错Exception in thread “main“ java.awt.HeadlessException: No X11 DISPLAY variable was s
  2. Ubuntu 下如何执行脚本文件
  3. Taro+dva+Typescript 搭建微信小程序架构
  4. 移动端网站如何开发(电脑端网站到手机端网站我们需要在html代码中添加哪个meta标签)...
  5. Spring Cloud(二):服务注册与发现 Eureka【Finchley 版】
  6. # C语言程序设计第二次作业——顺序结构
  7. java 异常java.lang.UnsupportedOperationException
  8. BZOJ 2756: [SCOI2012]奇怪的游戏
  9. JVM启动参数手册——JVM之八
  10. 架构如何为业务和技术“服务”(2)