pipeline input步骤
一.简介
执行imput步骤会暂停pipeline,直到用户输入参数。这是一种特殊的参数化pipeline的方法。
我们可以利用input步骤实现以下两种场景:
1.实现简易的审批流程。例如,pipeline暂停在部署前的阶段,由负责人点击确认后,才能部署。
2.实现手动测试阶段。在pipeline中增加一个手动测试阶段,该阶段中只有一个input步骤,当手动测试通过后,测试人员才可以通过这个unput步骤
在Jenkinsfile中加入input步骤
steps {
input message:"发布或者停止"
}
若只有message参数,则 input"发布或停止",需要点击按钮,才可以继续。

不管是哪个选项,日志都会记录是谁操作的,对审计很友好

二.input步骤复杂用法
//变量名,用于存储input步骤的返回值
def approvalMap
pipeline {
agent any
stages {
stage('pre deploy') {
steps {
script {
approvalMap = input(
message: '准备发布到哪个环境?',
ok:'确定',
parameters: [
choice(choices:'dev\ntest\nprod', description:'发布到什么环境?', name:'ENV'),
string(defaultValue:'', description:'', name:'myparam')
],
submitter:'admin,admin2,releaseGroup',
submutterParameter:'APPROVER'
)
}
}
}
stage('deploy') {
steps {
echo "操作者是 ${approvalMap['APPROVER']}"
echo "发布到什么环境? ${approvalMap['ENV']}"
echo "自定义参数: ${approvalMap['myparam']}"
}
}
}
}

在pipeline外定义了一个变量approvalMap。这是因为定义在阶段内的变量的作用域只在这个阶段中,而input步骤的返回值需要跨阶段使用,所以需要将其定义在pipeline外。
同时,由于在pipeline中直接使用了Groovy语法赋值表达式,所以需要将approvalMap=input(..) 放到script块中。
input步骤的返回值类型取决于要返回的值的个数。如果只有一个值,返回值类型就是这个值的类型。如果有多个值,返回值类型为Map类型。本实例返回的approvalMap就是一个map。Map的key就是每个参数的name属性,比如EVN,myparam都是key。
除了可以在返回的map中放手动输入的值,还可以放其他数据,比如submintterParameter:'APPROVER'代表将key APPROVER放到返回的map中。
步骤的参数:
- message: input步骤的提示信息
- submitter(可选) 字符串类型,可以进行操作的用户ID或用户组名,使用逗号分隔,在逗号左右不允许有空格。者在做input步骤的权限控制方面很实用。
- submitterParameter(可选):字符串类型,保存input步骤的实际操作者的用户名的变量名。
- ok(可选):自定义确定按钮的文本。
- parameters(可选):手动输入的参数列表。
- parameters指令支持的参数类型,input步骤都支持,写法一样
approvalMap还有一种定义方式,放在environment中。这样不需要定义顶部变量了。
environment {
approvalMap = ''
}
三.获取上游pipeline信息
上游pipeline触发下游pipeline时,并没有自动带上自身的信息。所以,当下游pipeline需要使用上游pipeline的信息时,上游pipeline信息就要以参数的方式传给下游pipeline。比如在上游pipeline中调用下游pipeline时,可以采用以下做法。
build job: 'all-in-one-deploy', parameters: [
string(name:'DEPLOY_ENV', value: "${deploy_env}"),
string(name:'triggerJobName', value:"${env.JOB_NAME}"),
string(name:'triggerJobBuildNumber', value:"${env.BUILD_NUMBER}")
]
四.超时中止
input步骤可以与timeout步骤实现超时自动中止pipeline,防止无限等待。以下pipeline一小时不处理就自动终止
steps{
timeout(time:1,unit:'HOURS') {
inout message:"发布或停止"
}
}
pipeline input步骤的更多相关文章
- 效验pipeline语法
目录 一.简介 二.配置 一.简介 因为jenkins pipeline不像JAVA之类的语言那样应用广泛,所以没有相关的代码检测插件. 2018年11月初,Jenkins官方博客介绍了一个VS Co ...
- Jenkins系列之pipeline语法介绍与案例
Jenkins Pipeline 的核心概念: Pipeline 是一套运行于Jenkins上的工作流框架,将原本独立运行于单个或者多个节点的任务连接起来,实现单个任务难以完成的复杂流程编排与可视化. ...
- Docker的Jenkins Pipeline工作流
原文地址:http://www.youruncloud.com/blog/127.html 分享主题 一个软件产品的开发周期中,尤其是敏捷开发,持续集成和持续部署是必不可少的环节,而随着产品的丰富,模 ...
- 管道式编程(Pipeline Style programming)
受 F# 中的管道运算符和 C# 中的 LINQ 语法,管道式编程为 C# 提供了更加灵活性的功能性编程.通过使用 扩展函数 可以将多个功能连接起来构建成一个管道. 前言 在 C# 编程中,管道式编程 ...
- 机器学习- Sklearn (交叉验证和Pipeline)
前面一节咱们已经介绍了决策树的原理已经在sklearn中的应用.那么这里还有两个数据处理和sklearn应用中的小知识点咱们还没有讲,但是在实践中却会经常要用到的,那就是交叉验证cross_valid ...
- pipeline 共享库
目录 一.简介 二.共享库扩展 共享库使用 共享库结构 pipeline模板 一些小问题 三.共享库例子 使用公共变量 使用共享库的src方法 使用共享库的vars方法 四.插件实现pipeline ...
- Tcl与Design Compiler (八)——DC的逻辑综合与优化
本文属于原创手打(有参考文献),如果有错,欢迎留言更正:此外,转载请标明出处 http://www.cnblogs.com/IClearner/ ,作者:IC_learner 对进行时序路径.工作环 ...
- linux实训
目 录 Unit 1 操作系统安装.... 3 1.1 多操作系统安装... 3 1.1.1 VMware简介... 3 1.1.2 VMWare基本使用... 4 1.2 安装Red Hat Li ...
- 美团店铺评价语言处理以及文本分类(logistic regression)
美团店铺评价语言处理以及分类(LogisticRegression) 第一篇 数据清洗与分析部分 第二篇 可视化部分, 第三篇 朴素贝叶斯文本分类 本文是该系列的第四篇 主要讨论逻辑回归分类算法的参数 ...
随机推荐
- 彻底搞懂Spring状态机原理,实现订单与物流解耦
本文节选自<设计模式就该这样学> 1 状态模式的UML类图 状态模式的UML类图如下图所示. 2 使用状态模式实现登录状态自由切换 当我们在社区阅读文章时,如果觉得文章写得很好,我们就会评 ...
- C/C++ Qt 自定义Dialog对话框组件应用
在上一篇博文 <C/C++ Qt 标准Dialog对话框组件应用> 中我给大家演示了如何使用Qt中内置的标准对话框组件实现基本的数据输入功能. 但有时候我们需要一次性修改多个数据,使用默认 ...
- 【vue.js】vue项目使用Iconfont(阿里图标库)
vue项目使用Iconfont(阿里图标库) 2019-11-12 19:07:02 by冲冲 1.操作步骤 ① 登录阿里巴巴矢量图标库 https://www.iconfont.cn ,注册账号 ...
- 完全用Deepin Linux娱乐、工作、学习(1)
截至今天我已经用全Deepin Desktop Linux环境娱乐.工作.学习了100多天.当你看到这个桌面的时候,会不会觉得它是MacOS?错了,它是Deepin Desktop Linux,而且它 ...
- 9. Delete Node in a Linked List
Write a function to delete a node (except the tail) in a singly linked list, given only access to th ...
- .Net调用Java的实现方法
一. IKVM 1.1下载配置IKVM 1.1.1. 下载路径 http://www.ikvm.net/index.html 1.1.2. 设置路径 解压ikvm-0.42.0.3.zip,并将%IK ...
- Flannel 启动报错
[root@ ~]#: kubectl logs -f kube-flannel-plcbl -n kube-system kube-flannel I0601 16:58:55.456862 1 m ...
- Flume(三)【进阶】
[toc] 一.Flume 数据传输流程 重要组件: 1)Channel选择器(ChannelSelector) ChannelSelector的作用就是选出Event将要被发往哪个Channel ...
- ComponentScan注解的使用
在项目初始化时,会将加@component,@service...相关注解的类添加到spring容器中. 但是项目需要,项目初始化时自动过滤某包下面的类,不将其添加到容器中. 有两种实现方案, 1.如 ...
- 【Netty】最透彻的Netty原理架构解析
这可能是目前最透彻的Netty原理架构解析 本文基于 Netty 4.1 展开介绍相关理论模型,使用场景,基本组件.整体架构,知其然且知其所以然,希望给大家在实际开发实践.学习开源项目方面提供参考. ...