Jenkins专题-1:什么是Jenkins以及Jenkins持续集成与部署的系统框架

主要内容:Jenkinsj简介、持续集成CI与DevOps、Jenkins功能架构


一、Jenkins简介

Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成CI变成可能。


二、持续集成CI与DevOps

无论是持续集成,还是DevOps,都是指软件开发流程。

软件的开发过程包括:需求、设计、编码、构建、测试、发布、运营。

上述是工业化生产软件的流程,每个环节就是软件生产过程中的一个环节,前一个环节的输出是下一个环节的输入。

每个环节之间都需要进行交接,有不同的团队来实现。

在软件需求快速变化的今天,为了加速软件的开发过程,把软件的自动化开发过程分为四个等级:

持续集成CI =》 持续交付 =》持续部署 =》持续运营与监控


第一个等级:持续集成CI

持续集成 的含义为:一键式软件开发、构建与测试。

这个过程包括:(需求、设计)、编码、构建、打包、测试
以图例说明持续集成的流程:

持续集成强调:

开发人员向代码库提交了新代码之后,

(1)自动完成代码库管理,

(2)自动进行构建Build

(3)自动化打包

(3)自动化测试:自动单元测试、回归测试、集成测试。根据测试结果,确定新代码和原有代码能否正确地集成在一起。如果失败,就会自动回退代码。

Jenkins就是管理自动化集成CI的工具 。


第二个等级:持续交付

交付:就是把软件产品交付给客户的过程

持续交付是在持续集成的基础之上,再增加一个自动的软件发布的环节。


第三个等级:持续部署

部署:就是把软件产品部署到客户现场。

持续部署:是在持续发布的基础之上,在增加一个自动把软件产品部署到客户的现场这个环节,并把部署的结果反馈给开发者则过程。

第四个等级:持续运营与监控


运营:就是利用软件产品给用户提供业务服务并进行盈利的过程。

持续运营与监控:是在持续部署的基础之上,在增加一个自动的软件的运营状况进行监控、数据分析,并把分析的结果直接反馈给开发者,进行实时反馈,实时完善的过程。

DevOps是两个词的缩写,Dev和Operation,即开发与运营。

传统的软件开发,是软件开发Dev和软件的运营Ops是分开的,

DevOps目标就是通过软件自动化,打破这两个环节之间手工或人为的操作,实现者两个环节的自动化连接。


持续的含义:

所谓持续,有几层含义:

(1)独立性:

从软件功能的角度看,持续意味着,每一次的代码提交,都是可以独立的不依赖于其他模块的完整实体。

如,持续集成,就意味着每次提交的代码是可以单独做集成测试的,不依赖其他模块;

持续发布,就意味着每次提交的代码是可以单独的发布给客户安装,不依赖其他模块;

持续部署,就意味着每次提交的代码是可以单独的部署给客户使用,不依赖其他模块;

持续运营,就意味着每次提交的代码是可以直接满足客户的某种业务的需求的,不依赖其他模块;

(2)自动化:

从人工参与的角度看,持续意味着,一键式代码提交后的自动化水平的程度。

要达到上述的“持续”的效果,除了每个环节需要大量的软件工具作为支撑,还需要把各个环节的软件功能集成起来,串接起来。

Jenkins就是这样一个,在软件开发过程中,辅助代码持续集成的管理工具。


三、Jenkins架构

1. 网络连接架构

  • Jenkins web server处于整个自动化测试平台的中心,用于调度其他服务器
  • 源代码仓库服务器:用来存放和管理源代码,支持软件版本控制。流行的源代码仓库服务有github、SVN
  • 编译服务器:对源代码和相互依赖的库文件进行编译,通常需要把源代码库的文件下载到编译服务器上
  • 自动化测试服务器:采用自动
  • 数据存储服务器和文件服务器,用来存储数据或日志log

2. Jenkins功能架构


四、创建job

1. New Item的类型:

(1)freeStyle Project: 构建一个自由风格的软件项目:这里的所有配置都由自己定义,默认也不会添加特定环境的选项/

(2)构建一个maven项目:Apache Maven[`meivn] )是一个软件项目管理和依赖管理工具。基于项目对象模型(POM)的概念,Maven可以通过资源仓库管理项目的构建,报告和文件。利用该项目类型,使用pom文件进行初始化配置,可以减少手动的配置工作、

(3)文件夹:用于组织其他item。

(4)GitHub Organization: 扫描gitHub上所有的仓库,找到符合条件或规则的条目。

(5)多分枝流水线:根据一个SCM仓库中检测到的分枝创建一系列流水线。

(6)External Job:Jenkins可用于监视进程的非交互式执行,例如cron作业,procmail,inetd启动的进程。通常这些任务是完全不受监控的(这使得您在发生错误时很难注意到),或者无论成功或失败都会不断发送电子邮件(导致相同的情况,因为您无论如何都会快速开始忽略它们。)使用Jenkins可以让您以很少的开销监视大量此类任务

2. 在这里,我们选择一个灵活的最大的freeStyle Project,作为案例

(1)General

  • Discard old builds:在启动一次新build时,是否要放弃原先的build的内容
  • Github项目:是否是GitHub项目
  • This build requires lockable resources:是否需要锁定的资源
  • throttle builds:节流构建,通过设置时间段内允许并发的次数来实现构建的控制

  • disable this project:是否disable该project

  • 如果必要,会进行并行build

(2)Source Code Management

源代码仓库如果是github的话,需要指定github的位置。

(3)Build Triggers:如何触发自动build

  • 远程的脚本的build请求。
  • 在某个project build完成后,就build此项目
  • 周期性的build
  • GitHub hook触发
  • 通过SCM的查询来判断是否需要构建build

(4)Build Environment:build的环境设置

  • 在启动一次性的build之前,清除workspace空间
  • 使用加密的文本和文件
  • 如果stuck了,这放弃此次build
  • 在输出信息中添加时间戳。

(5)Build:这部分是核心

添加需要build的所有步骤(即需要执行的脚本)

(6)Post-build Actions:自动构建后,需要执行的所有步骤或操作(需要执行的脚本)

添加需要build完成后的需要额外执行的所有步骤(即需要执行的脚本)

这里通常是进行自动化测试!

猜你喜欢

转载自blog.csdn.net/HiWangWenBing/article/details/107131952