Pipeline


Pipeline 是 Jenkins 中最为灵活的 job 构建方式,可实现像流水线一样调度 Jenkins 任务,通过 Jenkinsfile 描述整个持续集成流程。

Pipeline 支持使用声明式语法编写 Jenkinsfile。

    Jenkinsfile 如何组成呢?

Jenkinsfile 结构如下图所示:

pipeline


首先,声明式流水线语法必须包含在一个pipeline{}代码块内。

pipeline {
    /* Declarative Pipeline */
}

agent


agent{}定义 pipeline 任务执行的代理节点。

  • pipeline{}块的顶层定义,作为全局代理。
  • stage{}块中的定义,则作为阶段代理。

    什么是节点(node)?

在 Jenkins2 中 node 代表了任何可以执行 Jenkins 任务的系统。包含masterslave

master是一个 Jenkins 实例的主要控制系统,它能完全访问所有 Jenkins 配置选项和任务(job)列表。

如果没有指定其他系统(system),它也是默认的任务执行节点。但是我们并不推荐这么做,因为:

  • 任何需要大量处理的任务都应该在master之外的系统运行,避免潜在的阻塞操作对主系统造成的影响。
  • 凡是在master上执行的任务,都有权限访问所有数据、配置和操作,这会构成潜在安全风险。

为了减少系统负载,降低安全风险,通常在子系统只会安装一个轻量级 Jenkins 客户端应用来处理任务。这个客户端应用对资源的访问是受限的。

    agent 和 node 有何联系?

agent 有多种代理类型,包括 node、docker。

  • 不指定代理:agent any任意 可用的 agent 都可以执行
  • 指定节点标签:agent { label 'jdk11' }agent{ node { label 'jdk11' } }
  • 过滤节点标签:agent { label 'linux && jdk11' }

parameters


声明式流水线支持参数开箱即用,运行流水线在运行时通过parameters指令接收用户指定的参数。

Jenkinsfile支持的参数类型
类型 说明 语法
string 字符串类型参数 string(name: 'S', defaultValue: '', description: '', trim: true)
text 文本类型参数,与字符串类型区别在于可以包含多行信息,用于传入较多信息输入  
booleanParam 布尔类型参数 booleanParam(name: 'B', defaultValue: true, description: '')
choice 单选参数 choice(name: 'C', choices: ['a', 'b', 'c'], description: '')
file 构建过程中需要的文件  
password 密码类型,输入时显示密文。但是打印到终端会显示明文,不如 credentials 安全  

 如果你使用 Build with Parameters 选项将流水线配置为接受参数,这些参数将作为params变量的成员访问。例如:${params.S}

environment


自定义环境变量:environment { E = 'dev' }

使用自定义变量:${E}

使用内置变量:${env.BUILD_ID}

    Jenkins 流水线通过全局变量env提供内置环境变量,它在Jenkinsfile文件的任何地方都可以使用。

 

stages && stage


    什么是 stage ?

stage{}用来区分pipeline的各个阶段,是 job 中基于逻辑划分的最小任务执行单元。stage('stage name'){}可以定义阶段名称。

    什么是 stages ? 什么是 parallel ?

stages{}stage{}的集合,它是pipeline中最主要的组成部分。Jenkins 会按照stages{}中描述的顺序从上往下执行stage{}

parallel{}也是stage{}的集合,不同点在于parallel{}中的stage{}并行执行。

    stages、stage、parralel 的嵌套关系 ?

  1. 所有stage{}都会嵌套在最外层stages{}
  2. 一个stage{}下可以内嵌有且只有一个stages{}parallel{}

steps


steps{}是 pipeline 最核心的部分,它包含真正的可执行脚本,是最基本的操作单元。每个stage{}都需要指定一个或多个steps{}

 

post


post{}定义一个或多个相当于steps{}的条件块。

post{}支持的post-condition有:alwayschangedfailuresuccessunstableaborted

这些条件块的执行取决于流水线或阶段完成的状态。

原文地址:http://www.cnblogs.com/-ori/p/16924265.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性