jenkins的实现是标准的master/slave模式,用户与master交互,master将job分布到slave上运行。
jenkins的基本概念:
1. master, 也就是jenkins的server,是jenkins的核心,主要负责job的定时运行,将job分发到agent运行,和对job运行状态的监控。
2. agent/slave/node,agent是相对于master的概念,主要作用是监听master的指令,然后运行job。
3. executor,executor是虚拟的概念,每一个agent都可以设置executor的数量,表示可以同时运行的job的数量。
 
jenkins1的基本用法:
一般使用free style的job类型,在job的里面调用一些脚本和插件来实现整个持续集成的过程,一般是将整个job发布到某台机器上运行。缺点是job的配置分布在脚本和插件中,配置不够集中,导致监控的时候log不容易查找。一般要实现整个持续集成发布流程需要多个jobs来实现。
 
相对于jenkins1,jenkins2的核心概念是pipeline。在jenkins2中引入grovvy脚本和虚拟的概念stage使得jenkins的配置和监控更集中,更清楚。
jenkins2的一些新概念:
1. step,其实跟jenkins1中的概念一样, 是jenkins里job中的最小单位,可以认为是一个脚本的调用和一个插件的调用。
2. node, 是pipleline里groovy的一个概念,node可以给定参数用来选择agent,node里的steps将会运行在node选择的agent上。这里与jenkins1的区别是, job里可以有多个node,将job的steps按照需求运行在不同的机器上。例如一个job里有好几个测试集合需要同时运行在不同的机器上。
3. stage,是pipeline里groovy里引入的一个虚拟的概念,是一些step的集合,通过stage我们可以将job的所有steps划分为不同的stage,使得整个job像管道一样更容易维护。pipleline还有针对stage改进过的view,使得监控更清楚。
 
pipeline的设计理念是实现基于groovy脚本,灵活,可扩展的持续发布(CD)工作流。
pipeline的功能和优点:
1. durable持久性:在jenkins的master按计划和非计划的重启后,pipeline的job仍然能够工作,不受影响。其实理解起来也很简单,jenkins的master和agent通过ssh连接,如果你知道nohup或disown的话,就可以理解为啥master的重启不会影响agent上的job继续运行。之前已经有类似的插件https://www.cloudbees.com/products/cloudbees-jenkins-platform/enterprise-edition/features/long-running-build-plugin
2. 可暂停性:pipeline基于groovy可以实现job的暂停和等待用户的输入或批准然后继续执行。
3. 更灵活的并行执行,更强的依赖控制,通过groovy脚本可以实现step,stage间的并行执行,和更复杂的相互依赖关系。
4. 可扩展性:通过groovy的编程更容易的扩展插件。

jenkinsfile example如下:

其中job配置中采用了参数话配置,Parameter中的Name对列表中字段的value.

import groovy.transform.Field;

buildnodename = '10.74.215.39_chenxiaoyuan'

node(buildnodename) {
parameters {
string(branchname: 'BRANCH')
} stage "Checkout" git 'http://chenxiaoyuan@10.75.9.60:8083/gerrit/CGDL-X86/trunk/src/v1.1-cgdl'
echo "Hello ${params.BRANCH}" stage "Build"
echo "Build the source code." stage "Review"
echo "Review the commit code is awesome"
setGerritReview customUrl: 'http://chenxiaoyuan@10.75.9.60:8083/gerrit/CGDL-X86/trunk/src/v1.1-cgdl',unsuccessfulMessage: 'The git repository can not access, please the check its URL.' stage "Submit"
echo "Submit gerrit branch to develop branch of repo" stage "Rebuild"
echo "Rebuild the source code" stage "Update"
echo "Update rpm repo"
}

  

Jenkins2.0中的pipeline的更多相关文章

  1. ASP.NET Core 1.0 中使用 Swagger 生成文档

    github:https://github.com/domaindrivendev/Ahoy 之前文章有介绍在ASP.NET WebAPI 中使用Swagger生成文档,ASP.NET Core 1. ...

  2. Core 1.0中的管道-中间件模式

    ASP.NET Core 1.0中的管道-中间件模式 SP.NET Core 1.0借鉴了Katana项目的管道设计(Pipeline).日志记录.用户认证.MVC等模块都以中间件(Middlewar ...

  3. 【翻译】asp.net core2.0中的token认证

    原文地址:https://developer.okta.com/blog/2018/03/23/token-authentication-aspnetcore-complete-guide token ...

  4. scrapy框架中Item Pipeline用法

    scrapy框架中item pipeline用法 当Item 在Spider中被收集之后,就会被传递到Item Pipeline中进行处理 每个item pipeline组件是实现了简单的方法的pyt ...

  5. 探索ASP.Net Core 3.0系列二:聊聊ASP.Net Core 3.0 中的Startup.cs

    原文:探索ASP.Net Core 3.0系列二:聊聊ASP.Net Core 3.0 中的Startup.cs 前言:.NET Core 3.0 SDK包含比以前版本更多的现成模板. 在本文中,我将 ...

  6. 理解Laravel中的pipeline

    理解Laravel中的pipeline suoga 关注  0.1 2015.09.08 00:00* 字数 1533 阅读 7151评论 8喜欢 24 pipeline在laravel的启动过程中出 ...

  7. [译] C# 5.0 中的 Async 和 Await (整理中...)

    C# 5.0 中的 Async 和 Await [博主]反骨仔 [本文]http://www.cnblogs.com/liqingwen/p/6069062.html 伴随着 .NET 4.5 和 V ...

  8. Spring.Net在Mvc4.0中应用的说明

    案例Demo:http://yunpan.cn/cJ5aZrm7Uybi3 访问密码 414b Spring.Net在Mvc4.0中应用的说明 1.引用dll 2.修改Global文件 (Spring ...

  9. WCF学习之旅—WCF4.0中的简化配置功能(十五)

    六 WCF4.0中的简化配置功能 WCF4.0为了简化服务配置,提供了默认的终结点.绑定和服务行为.也就是说,在开发WCF服务程序的时候,即使我们不提供显示的 服务终结点,WCF框架也能为我们的服务提 ...

随机推荐

  1. Ubuntu中更改所有子文件和子目录所有者权限

    转自:http://www.linuxidc.com/Linux/2015-03/114695.htm Ubuntu中有两个修改命令可以用到,「change mode」&「change own ...

  2. java-学习4

    一.八大数据类型—dataType 整型 1)byte 2)short 3)int 4)long 浮点型 5)float 6)double 字符型 7)char 布尔型 8)boolean 二.变量和 ...

  3. cakephp2.7的学习笔记1 —— 安装与配置

    CakePHP2.7的安装 下载 https://github.com/cakephp/cakephp/releases 解压后扔进你的www目录就可以直接访问 按照提示,修改这两项配置,替换成你喜欢 ...

  4. PO ITEM_BOM_工艺路线SQL

    ---物料主数据接口 SELECT count(*)PO_MARA FROM STG.PO_MARA; SELECT count(*)PO_MARC FROM STG.PO_MARC; SELECT ...

  5. Oracle OLAP 与 OLTP 介绍

    文章出处:http://blog.csdn.net/tianlesoftware/article/details/5794844 感谢原作者的分享. 数据处理大致可以分成两大类:联机事务处理OLTP( ...

  6. 数据库类型空间效率探索(三)-char

    测试环境 表信息 表数据量22.23万,占用空间44.494M 用到的sql语句 增加列:alter table t_type add column new_column char(1) defaul ...

  7. javascript基础:函数参数与闭包问题

    今天在写东西的时候,对函数参数的概念有些模糊,查阅相关资料后,在博客上记点笔记,方便日后复习. 首先,在js中函数参数并没有强语言中那么要求严格,他不介意传递进来多少个参数,也不在乎传进来的参数是什么 ...

  8. Numpy函数库基础

    利用Numpy函数库构造4*4随机数组,然后将数组转化为矩阵,然后矩阵与其逆矩阵相乘,计算机处理的误差 from numpy import * random.rand(4,4) print(rando ...

  9. WAS 与IHS集成问题

    1.安装好WAS与IHS后 发布Web发现无法启动 查阅资料后发现缺少插件Plugins 于是去下载安装对应版本的Plugins 发现还是有问题 后来想起发布web01时,插件还未安装.因此重新发布一 ...

  10. Wasserstein距离

    https://blog.csdn.net/leviopku/article/details/81388306 https://blog.csdn.net/nockinonheavensdoor/ar ...