jenkins pipeline语法
一.声明式
声明式Pipeline必须包含在名为pipeline的语句块中,典型的声明式Pipeline语法如下
pipeline {
agent any
environment { }
stages {
stage("Build") {
steps {
sh 'echo Building...
}
}
stage("Test") {
steps {
sh 'echo Testing...'
}
}
}
}
一个合法的Pipeline遵从下面的几个原则:
- 顶层语句块只能是pipeline {}
- 每一个语句只能写在一行,没有分隔符,例如分号“;”
- 结构块只能是Sections、Directive、steps或者赋值语句其中之一
- 所有的属性引用都被视为没有参数的方法调用,例如input等同于input()
二.脚本式
Scripted Pipeline对语法的要求比较宽松,顶层可以是node,也可以是stage。node可以嵌套stage,stage反过来也可以嵌套node。典型的脚本式Pipeline语法如下:
node {
stage("Build") {
sh 'echo Building...'
}
stage("Test"){
sh 'echo Testing...'
}
}
基本
node {
dir('/home/share/node/falcon') {
stage("git") {
sh "git fetch origin"
sh "git checkout -f origin/master"
}
}
dir('路径')
更换执行目录,jenkins默认的执行目录在环境设置中设置,默认是/
stage("git")
方法是阶段的名称,这个是完全自定义的,相当于给构建流程中的某些步骤称为一个阶段,比如git操作阶段、安装依赖阶段、编译阶段、发布阶段
sh
后接的就是命令行操作了,如果只有一行,那么用''或者用""包裹起来,如果有多行的话,用'''包裹
判断
pipeline脚本同其它脚本语言一样,从上至下顺序执行,它的流程控制取决于Groovy表达式,如if/else条件语句。
在构建项目时,我们可以写一些条件,例如检测项目是否在本地存在,如果存在就进到项目了拉取最新版本,不存在直接拉取最新版本的项目
node {
dir('/home/share/www') {
stage('Git') {
if(fileExists('openapi')) {
dir('/home/share/www/openapi') {
sh 'git fetch origin'
sh 'git checkout master'
sh 'git pull'
}
} else {
sh 'git clone git@git.coding.net:flashtd1/DPOpenAPI.git openapi'
}
}
}
}
if(fileExists('文件名'))
判断文件是否存在
异常处理
pipeline脚本流程控制的另一种方式是Groovy的异常处理机制。当任何一个步骤因各种原因而出现异常时,都必须在Groovy中使用try/catch/finally语句块进行处理,举例如下:
Jenkinsfile (Scripted Pipeline)
node {
stage('Example') {
try {
sh 'exit 1'
}
catch (exc) {
echo 'Something failed, I should sound the klaxons!'
throw
}
}
}
Steps
pipeline最核心和基本的部分就是“step”,从根本上来说,steps作为Declarative pipeline和Scripted pipeline语法的最基本的语句构建块来告诉jenkins应该执行什么操作。
Scripted pipeline没有专门将steps作为它的语法的一部分来介绍,但是在Pipeline Steps reference这篇文档中对pipeline及其插件涉及的steps做了很详细的介绍。如有需要可参考jenkins官网对该部分的介绍Pipeline Steps reference
node
这里的node对应于Declarative Pipeline的agent,用于指定构建步骤应该在哪个构建服务器执行。
node('master'){
stage('Build'){
echo 'Building...'
}
}
node可以嵌套stage,也可以被stage嵌套
stage('Build'){
node('linux'){
sh 'echo building in linux'
}
node('windows'){
bat 'echo building in windows'
}
}
withEnv
withEnv方法和environment语句块对应,用于定义环境变量。
jenkins pipeline语法的更多相关文章
- Jenkins pipeline 语法详解
原文地址http://www.cnblogs.com/fengjian2016/p/8227532.html pipeline 是一套运行于jenkins上的工作流框架,将原本独立运行于单个或者多个节 ...
- Jenkins Pipeline 语法
Pipeline语法 先讲Declarative Pipeline,所有声明式管道都必须包含在pipeline块中: 123 pipeline { /* insert Declarative Pipe ...
- 【原】Jenkins pipeline中资料总结
docker-compose 快速部署持续集成测试环境 Gitlab+Harbor+Jenkins pipeline 实现 tag run docker Images https://www.cnbl ...
- Jenkins pipeline:pipeline 使用之语法详解
一.引言 Jenkins 2.0的到来,pipline进入了视野,jenkins2.0的核心特性. 也是最适合持续交付的feature. 简单的来说,就是把Jenkins1.0版本中,Project中 ...
- Jenkins pipeline:pipeline 语法详解
jenkins pipeline 总体介绍 pipeline 是一套运行于jenkins上的工作流框架,将原本独立运行于单个或者多个节点的任务连接起来,实现单个任务难以完成的复杂流程编排与可视化. ...
- 转~Jenkins pipeline:pipeline 使用之语法详解
一.引言 Jenkins 2.0的到来,pipline进入了视野,jenkins2.0的核心特性. 也是最适合持续交付的feature. 简单的来说,就是把Jenkins1.0版本中,Project中 ...
- Jenkins系列之pipeline语法介绍与案例
Jenkins Pipeline 的核心概念: Pipeline 是一套运行于Jenkins上的工作流框架,将原本独立运行于单个或者多个节点的任务连接起来,实现单个任务难以完成的复杂流程编排与可视化. ...
- 7.Jenkins进阶之流水线pipeline语法入门学习(2)
目录一览: (2) Declarative Pipeline Syntax 2.1) Sections - 章节 2.2) Directives - 指令 2.3) Sequential Stages ...
- 6.Jenkins进阶之流水线pipeline语法入门学习(1)
目录一览: 0x00 前言简述 Pipeline 介绍 Pipeline 基础知识 Pipeline 扩展共享库 BlueOcean 介绍 0x01 Pipeline Syntax (0) Groov ...
随机推荐
- Windows漏洞:MS08-067远程代码执行漏洞复现及深度防御
摘要:详细讲解MS08-067远程代码执行漏洞(CVE-2008-4250)及防御过程 本文分享自华为云社区<Windows漏洞利用之MS08-067远程代码执行漏洞复现及深度防御>,作者 ...
- [atAGC029F]Construction of a tree
构造一张二分图,左边是$n$个点,右边是$n-1$个集合,按照点属于集合连边 定义一组匹配的意义,即说明该点的父亲在该集合中选择 利用dinic求出二分图的最大匹配,若不为$n-1$则无解,否则考虑如 ...
- jvm的垃圾回收
首先类加载的过程:加载验证准备解析初始化 类加载器: jvm内存模型图: 空着,等以后补上 jvm垃圾收集器 目前只知道,parnew,cms,g1 parnew新生代垃圾回收器,复制算法 cms复制 ...
- web渗透工程师学习
职位描述: 对公司网站.业务系统进行安全评估测试(黑盒.白盒测试): 对公司各类系统进行安全加固: 对公司安全事件进行响应,清理后门,根据日志分析攻击途径: 安全技术研究,包括安全防范技术,黑客技术等 ...
- Arc123 D
Arc123 D 很好考场降智了. 感觉\(D\)比\(C\)好做多了. 考虑\(C_i = A_i - B_i\),那么有\(C_{i + 1} \leq C_i,B_i \leq B_{i + 1 ...
- nohup使用
nohup:不挂断运行 在忽略挂起信号的情况下运行给定的命令,以便在注销后命令可以在后台继续运行. 可以这么理解:不挂断的运行,注意并没有后台运行的功能,就是指,用nohup 运行命令可以是命令永远运 ...
- EXCEL-批量修改列宽
WPS:先用鼠标选中一列,然后,长按ctrl键并且用鼠标选中剩余想要统一列宽的列,松开ctrl键,鼠标落在刚选中的任意一列的抬头上,鼠标右键,选择列宽,设置统一列宽即可.
- Mysql笔记(3)
查询总数count(1)查询总和sum(数据名) 查询最大值max(数据名) 查询最小值min(数据名) 查询平均值avg(数据名) 去除重复 通过having来过滤group by字句的结果信息 i ...
- 日常Java 2021/10/1
正则表达式 \cx匹配由x指明的控制字符.例如,lcM匹配一个Control-M或回车符.x的值必须为A-Z或a-z之一.否则,将c视为一个原义的'℃'字符.\f匹配--个换页符.等价于\xOc和\c ...
- day06 模板层
day06 模板层 今日内容 常用语法 模板语法传值 模板语法之过滤器 模板语法之标签 自定义过滤器.标签.inclusion_tag(BBS作业用一次) 模板的继承(django前后端结合 那么使用 ...