Jenkins Pipeline: pipeline语法详解

一. 简介

Pipeline支持两种语法: Declarative Pipeline(声明式pipeline,在pipeline2.5中引入,结构化方式)和Scripted Pipeline(脚本式pipeline),两者都支持建立连续输送的Pipeline。

相关资料:

https://stackoverflow.com/questions/43484979/jenkins-scripted-pipeline-or-declarative-pipeline

http://jenkins-ci.361315.n4.nabble.com/Declarative-pipelines-vs-scripted-td4891792.html

声明式Pipeline是后续Open Blue Ocean所支持类型,建议使用声明式Pipeline的方式进行编写,从jenkins社区动向看,很明显这种语法结构会是未来的趋势。

  • 声明式pipeline可以内嵌脚本式pipeline
  • 声明式pipeline必须包含在固定格式的pipeline{}内
  • 块(Block{}): 只能包含章节Sections,指令Directives,步骤Steps或者赋值语句
  • 章节(Sections): 通常包括一个或多个指令或步骤,如agent,post,stages,steps
  • 指令(Directives): environment,options,parameters,triggers,stage,tools,when
  • 步骤(steps): 执行脚本式pipeline,如script{}

Sections(章节)

agent

Pipeline或特定阶段将在Jenkins环境中执行的位置,具体取决于该agent 部分的放置位置;必须在pipeline顶层定义。

参数:

  • any: 在任何可用的agent 上执行Pipeline或stage。例如:agent any。
  • none: 当在pipeline块的顶层使用none时,将不会为整个Pipeline运行分配全局agent ,每个stage部分将需要包含其自己的agent部分。
  • label: 使用有label标签的agent,例如:agent { label ‘my-defined-label‘ }。
  • node: agent { node { label ‘labelName‘ } },等同于 agent { label ‘labelName‘ },但node允许其他选项(如customWorkspace)。
  • docker: 动态供应一个docker节点去执行pipeline或stage,docker还可以接受一个args,直接传递给docker run调用。
agent {
    docker {
        image ‘maven:3-alpine‘
        label ‘my-defined-label‘
        args  ‘-v /tmp:/tmp‘
    }
}
  • dockerfile: Dockerfile源存储库中包含的容器来构建执行Pipeline或stage。使用此参数,jenkinsfile必须从代码中加载使用“pipeline from SCM”或者“Multibranch Pipeline”加载

默认是Dockerfile在根目录: agent { dockerfile true }

如果Dockerfile在另一个目录,使用dir参数: agent { dockerfile { dir ‘someSubDir‘ } }

可以使用docker build添加参数: agent { dockerfile { additionalBuildArgs ‘--build-arg foo=bar‘ } }

pipeline {
    agent { dockerfile true }
    stages {
        stage(‘Test‘) {
            steps {
                sh ‘node --version‘
                sh ‘svn --version‘
            }
        }
    }
}
常用选项:
  • label: 一个字符串,选择哪个特定的label标签,此选项适用于node,docker和dockerfile,并且 node是必需的。
  • customWorkspace: 一个字符串, 自定义工作空间,可以使相对路径,也可以是绝对路径。
agent {
    node {
        label ‘my-defined-label‘
        customWorkspace ‘/some/other/path‘
    }
}
  • reuseNode: 一个布尔值,默认false,如果为true,在同一工作空间中,适用于docker和dockerfile,并且仅在 单个的stage中使用agent才有效。

原文地址:https://www.cnblogs.com/vito-lee/p/12625365.html

时间: 2024-11-10 13:32:38

Jenkins Pipeline: pipeline语法详解的相关文章

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

一.引言 jenkins pipeline语法的发展如此之快用日新月异来形容也不为过,而目前国内对jenkins pipeline关注的人还非常少,相关的文章更是稀少,唯一看到w3c有篇相关的估计是直接翻译软件翻的,读下来惨不忍睹.没办法,语法详解这章我干脆把jenkins官网上的语法说明全部翻译了一遍,并更新了陈旧的内容(可怜了我大学四级的英语水平~),英语好的朋友也可以直接到官网阅读. 二.语法简介 Pipeline最基本的部分是"step".基本上,step告诉Jenkins 要

Java8初体验(二)Stream语法详解

原文链接:http://ifeve.com/stream/ 1. Stream初体验 我们先来看看Java里面是怎么定义Stream的: A sequence of elements supporting sequential and parallel aggregate operations. 我们来解读一下上面的那句话: Stream是元素的集合,这点让Stream看起来用些类似Iterator: 可以支持顺序和并行的对原Stream进行汇聚的操作: 大家可以把Stream当成一个高级版本的

Hadoop Hive sql语法详解

Hive 是基于Hadoop 构建的一套数据仓库分析系统,它提供了丰富的SQL查询方式来分析存储在Hadoop 分布式文件系统中的数据,可以将结构化的数据文件映射为一张数据库表,并提供完整的SQL查询功能,可以将SQL语句转换为MapReduce任务进行运行,通过自己的SQL 去查询分析需要的内容,这套SQL 简称Hive SQL,使不熟悉mapreduce 的用户很方便的利用SQL 语言查询,汇总,分析数据.而mapreduce开发人员可以把己写的mapper 和reducer 作为插件来支持

less中的部分语法详解

less中的语法详解,主要是介绍一些平时常用的语法,如果有更多更实用的语法欢迎大家和我交流. 一.变量. 变量是识别符号是@,在less中以@开头的则是变量,关于变量名的命名方法,大家可以参考js中命名的规则,毕竟是做前端的,有着统一的习惯有助于我们统一风格.个人推荐变量名的命名规则使用驼峰命名法.第一个单词首写字母小写,从第二个开始,单词首写字母大写.如boxAaa,boxBbbb,boxContainer,……,当然也是可是使用香肠命名法用下划线“_”来命名.如,box_main,borde

JSP语法详解

转自:http://www.cnblogs.com/culffe/articles/1142388.htm ———————————————————————————————————— 1)HTML注释: <!-- 注释内容 [ <%= 表达式 %> ] --> 可以用注释内容,也可以用表达式. 2)隐藏注释: <%-- 注释内容 --%> 注释会被JSP编译时被忽略.编译器不会对<%-- --%>之间的语句编译,它不会显示在客户的浏览器和源代码中. 3)声明:

Velocity魔法堂系列二:VTL语法详解

一.前言 Velocity作为历史悠久的模板引擎不单单可以替代JSP作为Java Web的服务端网页模板引擎,而且可以作为普通文本的模板引擎来增强服务端程序文本处理能力.而且Velocity被移植到不同的平台上,如.Net的NVelocity和js的Velocity.js,虽然各平台在使用和实现上略有差别,但大部分语法和引擎核心的实现是一致的,因此学习成本降低不少哦. 最好的学习资源——官网:http://velocity.apache.org/ 本系列打算采用如下结构对Velocity进行较为

Android.mk 文件语法详解

转:http://blog.sina.com.cn/s/blog_602f8770010148ce.html ===================================================================================== 0. Android.mk简介: Android.mk文件用来告知NDK Build 系统关于Source的信息. Android.mk将是GNU Makefile的一部分,且将被Build System解析一次或多次

PL/SQL程序设计基础语法详解(一)

一.什么是PL/SQL(Procedure Language/SQL) 概念:PLSQL是Oracle对sql语言的过程化扩展 指在SQL命令语言中增加了过程处理语句(如分支.循环等),使SQL语言具有过程处理能力. PL/SQL的结构: declare 说明部分 (变量说明,光标申明,例外说明 ] begin 语句序列 (DML语句]- exception 例外处理语句 End; 简单的PL/SQL程序 如果是在命令行中需要使用 set serveroutput on先打开显示 declare

SQLSERVER存储过程语法详解

SQL SERVER存储过程语法: Create PROC [ EDURE ] procedure_name [ ; number ]     [ { @parameter data_type }         [ VARYING ] [ = default ] [ OUTPUT ]     ] [ ,...n ] [ WITH     { RECOMPILE | ENCRYPTION | RECOMPILE , ENCRYPTION } ] [ FOR REPLICATION ] AS sq

innosetup语法详解

1 ; 脚本由 Inno Setup 脚本向导 生成! 2 ; 有关创建 Inno Setup 脚本文件的详细资料请查阅帮助文档! 3 ;Inno Setup 是一个免费的 Windows 安装程序制作软件. 4 ;第一次发表是在 1997 年,Inno Setup 今天在功能设置和稳定性上的竞争力可能已经超过一些商业的安装程序制作软件 5 ;它是真正免费的软件,即使作为商业应用 6 ;还有一个特点,压缩率特别高,特别适合VB软件,我这个安装打包后只有3.7M,其他打包工具5M多 7 ;安装程序