什么是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. 进程管理02 通过PEB枚举进程所有模块

    0x01  结构探究 先在win7 x86下通过windbg来探究通过peb来得到进程模块的步骤: 命令!process 0 0 exeplorer.exe 先获取到explorer.exe的EPRO ...

  2. A JSON example

    heroes.html<!DOCTYPE html> <html> <head> <meta charset="utf-8"> &l ...

  3. oracle监控资源管理器

    资源管理器的配置在一组dba视图显示,主要是如下视图: dba_rsrc_plans 显示计划和状态. dba_rsrc_plan_directives 显示计划指令 dba_rsrc_consume ...

  4. 使用RTL-SDR打开车门

    在最近几年,入侵汽车在当代社会的黑客圈中成为热点,很多文章表明汽车产业还有很多东西等待完善,在本篇文章中,我会让你熟悉我一直研究的一些概念,以及如何在网状网络中使用一些便宜的部件渗透远程开门系统. 软 ...

  5. find: paths must precede expression问题及解决

    用find命令查找时 例如命令 会出错,查文档找出 find: paths must precede expression Usage: find [-H] [-L] [-P] [-Olevel] [ ...

  6. JAVA将汉字转换为全拼以及返回中文的首字母,将字符串转移为ASCII码

    import net.sourceforge.pinyin4j.PinyinHelper;import net.sourceforge.pinyin4j.format.HanyuPinyinCaseT ...

  7. 第七十八课 最短路径(Dijkstra)

    核心思想是从已知的最短路径推算未知的最短路径. 添加程序: #ifndef GRAPH_H #define GRAPH_H #include "Object.h" #include ...

  8. RPi 3B Aduio 3.5mm output

    /********************************************************************** * RPi 3B Aduio 3.5mm output ...

  9. s21day12 python笔记

    s21day12 python笔记 一.函数中高级 1.1 函数可以做返回值 #示例: def func(): print(123) def bar(): return func v = bar() ...

  10. .net平台常用组建

    常用的一些开源组件整理: 导出Excel报表的插件:NOPI.dll(基于微软OpenXml实现)开源的作业调度和自动任务框架:Quartz.NET用于大数据搜索引擎的全文检索框架:Lucene.ne ...