什么是pipeline

先介绍下什么是Jenkins 2.0,Jenkins 2.0的精髓是Pipeline as Code,是帮助Jenkins实现CI到CD转变的重要角色。什么是Pipeline,简单来说,就是一套运行于Jenkins上的工作流框架,将原本独立运行于单个或者多个节点的任务连接起来,实现单个任务难以完成的复杂发布流程。Pipeline的实现方式是一套Groovy DSL,任何发布流程都可以表述为一段Groovy脚本,并且Jenkins支持从代码库直接读取脚本,从而实现了Pipeline as Code的理念。
Pipeline的几个基本概念:
Stage: 阶段,一个Pipeline可以划分为若干个Stage,每个Stage代表一组操作。注意,Stage是一个逻辑分组的概念,可以跨多个Node。
Node: 节点,一个Node就是一个Jenkins节点,或者是Master,或者是Agent,是执行Step的具体运行期环境。
Step: 步骤,Step是最基本的操作单元,小到创建一个目录,大到构建一个Docker镜像,由各类Jenkins Plugin提供。
本节介绍Jenkins Pipeline的一些核心概念,并介绍在运行的Jenkins实例中定义和使用Pipelines的基础知识。

使用条件

要使用Jenkins Pipeline,需要:
Jenkins 2.x或更高版本
Pipeline插件

Pipeline定义

Pipeline脚本是用Groovy写的 。Groovy语法将在后续文档中介绍。
可以通过以下任一方式创建基本Pipeline:
pipeline script:直接在Web UI的script输入框里面输入pipeline script语句即可,参考说明可以点击输入框下边的Pipeline Syntax,里面有很多示例操作说明,非常好用。
pipeline script from SCM:需要配置SCM代码存储Git地址或SVN地址,指定script文件Jenkinsfile所在路径,每次构建job会自动去指定的目录执行script文件
以上两种方法定义Pipeline的语法都是一样的。

在Web UI中定义Pipeline
要在Jenkins Web UI中创建基本Pipeline Job,请按照下列步骤操作:
单击Jenkins主页上的New Item。

 

输入Pipeline的名称,选择Pipeline,然后单击确定。

 

在脚本文本区域中,输入Pipeline,然后单击保存。

 

 

 

单击“构建历史记录”下的#buildId,然后单击控制台输出以查看Pipeline的完整输出

 

 

在SCM中定义pipeline
复杂的Pipeline难以在Pipeline配置页面的文本区域内进行写入和维护。为了解决这一问题,jenkins Pipeline支持在文本编辑器中编写脚本文件jenkinsFile,Jenkins可以通过从SCM选项的控件中加载Pipeline脚本。
选择SCM选项中的Pipeline脚本后,不要在Jenkins UI中输入任何Groovy代码; 只需指定要检索的Pipeline脚本的路径。更新指定的存储库时,只要Pipeline配置了SCM轮询触发器,就会触发一个新构建。
---文本编辑器,IDE,GitHub等将使用Groovy代码进行语法高亮显示, 第一行Jenkinsfile应该是#!/usr/bin/env groovy Jenkinsfile。
内置文档
Pipeline配有内置的文档功能,可以更轻松地创建不同复杂性的Pipeline。根据Jenkins实例中安装的插件自动生成和更新内置文档。
内置文档可以在全局范围内找到: localhost:8080/pipeline-syntax/,假设您有一个Jenkins实例在本地端口8080上运行。同样的文档也作为pipeline语法链接到任何配置的Pipeline的侧栏中项目。

 

代码段生成器
内置的“Snippet Generator”程序有助于为单个步骤生成代码段。
Snippet Generator动态填充Jenkins实例可用的步骤列表。可用的步骤数量取决于安装的插件,它明确地暴露了在Pipeline中使用的步骤。
要使用代码段生成器生成步骤代码片段:
1、从配置的流水线或本地主机:8080 / pipeline-syntax导航到Pipeline语法链接Pipeline Syntax

 

2、在“ Sample Step”下拉菜单中选择所需的步骤,使用“Sample Step”下拉列表下方的动态填充区域配置所选步骤,如message为“hello world”,单击生成Pipeline脚本以创建一个可以复制并粘贴到Pipeline中的Pipeline代码段

 

全局变量引用
除了代码片段生成器之外,Pipeline还提供了一个内置的“ 全局变量引用”。像Snippet Generator一样,它也是由插件动态填充的。与代码段生成器不同的是,全局变量引用仅包含Pipeline提供的变量,这些变量可用于Pipeline。

 

在Pipeline中默认提供的变量是:
ENV
Pipeline脚本可访问的环境变量,例如: env.PATH或env.BUILD_ID。请参阅内置的全局变量,以获取管道中可用的完整和最新的环境变量列表。
PARAMS
将为Pipeline定义的所有参数公开,例如:params.MY_PARAM_NAME。
currentBuild
可获取当前正在执行的Pipeline job的信息,例如属性currentBuild.result,currentBuild.displayName等等

引用官方文档:https://jenkins.io/doc/book/pipeline/getting-started/
Groovy语法及入门:
Groovy入门之语法和变量定义
Groovy进阶之函数、闭包和类
精通 Groovy

[持续交付实践] pipeline使用:快速入门的更多相关文章

  1. [持续交付实践] pipeline使用:Multibranch Pipeline

    前言 在探讨multiBranch Pipeline之前,很有必要先探讨下如何制定有效的代码分支管理规范,使用高效的版本控制系统,并对构建产物及其依赖进行管理.我们首先要强调,需要进行版本控制的不仅是 ...

  2. [持续交付实践] pipeline使用:项目样例

    项目说明 本文将以一个微服务项目的具体pipeline样例进行脚本编写说明.一条完整的pipeline交付流水线通常会包括代码获取.单元测试.静态检查.打包部署.接口层测试.UI层测试.性能专项测试( ...

  3. [持续交付实践] pipeline使用:Shared Libraries

    前言 随着pipeline交付流水线在团队中的推广,使用pipeline脚本的job也迅速增加.虽然我们已经基于公司的技术栈特点做了一个尽可能通用的pipeline脚本样例,让搭建者只需要修改几个赋值 ...

  4. [持续交付实践] pipeline使用:语法详解

    一.引言 jenkins pipeline语法的发展如此之快用日新月异来形容也不为过,而目前国内对jenkins pipeline关注的人还非常少,相关的文章更是稀少,唯一看到w3c有篇相关的估计是直 ...

  5. 云端基于Docker的微服务与持续交付实践

    云端基于Docker的微服务与持续交付实践笔记,是基于易立老师在阿里巴巴首届在线技术峰会上<云端基于Docker的微服务与持续交付实践>总结而出的. 本次主要讲了什么? Docker Sw ...

  6. Docker学习总结(14)——从代码到上线, 云端Docker化持续交付实践

    2016云栖大会·北京峰会于8月9号在国家会议中心拉开帷幕,在云栖社区开发者技术专场中,来自阿里云技术专家罗晶(瑶靖)为在场的听众带来<从代码到上线,云端Docker化持续交付实践>精彩分 ...

  7. [置顶] Docker学习总结(7)——云端基于Docker的微服务与持续交付实践

    本文根据[2016 全球运维大会•深圳站]现场演讲嘉宾分享内容整理而成 讲师简介 易立 毕业于北京大学,获得学士学位和硕士学位:目前负责阿里云容器技术相关的产品的研发工作. 加入阿里之前,曾在IBM中 ...

  8. 中小研发团队架构实践之RabbitMQ快速入门及应用

    原文:中小研发团队架构实践之RabbitMQ快速入门及应用 使用过分布式中间件的人都知道,程序员使用起来并不复杂,常用的客户端API就那么几个,比我们日常编写程序时用到的API要少得多.但是分布式中间 ...

  9. [持续交付实践] Jenkins Pipeline 高可用设计方法

    前言 这篇写好一段时间了,一直也没发布上来,今天稍微整理下了交下作业,部分内容偷懒引用了一些别人的内容.使用Jenkins做持续集成/持续交付,当业务达到一定规模的时候,Jenkins本身就很容易成为 ...

随机推荐

  1. day060 ajax文件上传 json补充

    请求头ContentType 文件上传时需要指定请求头,常见的类型有3种: 1.application/x-www-form-urlencoded(可以类比成在url后面拼接的形式发送,即a=1&am ...

  2. 为何放弃Eclipse,选择IntelliJ IDEA,看完终于明白了

    如果你初次用idea,毫无目的的度娘如何使用IDEA     浪费的将会是大量的时间.一套让你花时间,少走弯路的视频教程(下载地址:https://pan.baidu.com/s/1gfeX3hD) ...

  3. MySQL:函数

    函数 一.数学函数 1.绝对值函数ABS(x): x为插入的数据,返回绝对值 2.返回圆周率函数PI(): 无需插入数据,返回圆周率的值,默认为小数点后6位 3.平方根函数SQRT(x): 返回非负数 ...

  4. spring集成jedis简单实例

    jedis是redis的java客户端,spring将redis连接池作为一个bean配置. redis连接池分为两种,一种是“redis.clients.jedis.ShardedJedisPool ...

  5. 百度前端代码规范:CSS

    1.代码风格 1.1 文件 [建议] CSS 文件使用无 BOM 的 UTF-8 编码. 1.2 缩进 [强制] 使用 4 个空格做为一个缩进层级,不允许使用 2 个空格 或 tab 字符. 1.3 ...

  6. ubuntu 初始安装完成后的一些设置

    处于安全考虑最好,使用普通用户登录. 首先以超级用户登入系统,然后执行以下步骤 第一步:设置普通用户 以下<user_name>代表普通用户的用户名 useradd -g users -d ...

  7. C# winform 打开主界面并关闭登录界面

    在winform 界面编程中,我们有时候要在主界面打开之前先显示登录界面,当登录界面用户信息校验正确后才打开主界面,而这时登陆界面也完成使命该功成身退了. 目前有两种方法可实现: 方法1. 隐藏登录界 ...

  8. python 保存对象文件

    之前用 R 语言一直感觉 .Rdata 格式的文件很好用,可以把每次执行的中间文件保存便于下次调用,刚熟悉 Python 还没接触这块知识,所以有时候做项目不太顺手,索性上网搜了下,整理如下: 模型存 ...

  9. Property referenced in indexed property path is neither an array nor a List nor a Map

    记一次传参请求报错,没有解决 Invalid property 'distributeCars[0][ackStatus]' of bean class [com.api6.plate.prototy ...

  10. Lucene的基本使用

    1.了解搜索技术 2.搜索引擎的原理 索引:类似于书的目录 3.实现搜索技术的方式 方式1:数据库搜索 利用SQL语句进行模糊搜索: select * from items where title l ...