前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >pipeline input步骤

pipeline input步骤

原创
作者头像
陈不成i
修改2021-06-03 18:03:22
1.6K0
修改2021-06-03 18:03:22
举报
文章被收录于专栏:ops技术分享

一.简介

执行imput步骤会暂停pipeline,直到用户输入参数。这是一种特殊的参数化pipeline的方法。

我们可以利用input步骤实现以下两种场景: 1.实现简易的审批流程。例如,pipeline暂停在部署前的阶段,由负责人点击确认后,才能部署。 2.实现手动测试阶段。在pipeline中增加一个手动测试阶段,该阶段中只有一个input步骤,当手动测试通过后,测试人员才可以通过这个unput步骤

在Jenkinsfile中加入input步骤

  1. steps {
  2.     input message:"发布或者停止"
  3. }若只有message参数,则 input”发布或停止”,需要点击按钮,才可以继续。

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

二.input步骤复杂用法

  1. //变量名,用于存储input步骤的返回值
  2. def approvalMap
  3. pipeline {
  4.     agent any
  5.     stages {
  6.         stage('pre deploy') {
  7.             steps {
  8.                 script {
  9.                     approvalMap = input(
  10.                         message: '准备发布到哪个环境?',
  11.                         ok:'确定',
  12.                         parameters: [
  13.                             choice(choices:'dev\ntest\nprod', description:'发布到什么环境?', name:'ENV'),
  14.                             string(defaultValue:'', description:'', name:'myparam')
  15. ],
  16.                         submitter:'admin,admin2,releaseGroup',
  17.                         submutterParameter:'APPROVER'
  18. )
  19. }
  20. }
  21. }
  22.         stage('deploy') {
  23.             steps {
  24.                 echo "操作者是 ${approvalMap['APPROVER']}"
  25.                 echo "发布到什么环境? ${approvalMap['ENV']}"
  26.                 echo "自定义参数: ${approvalMap['myparam']}"
  27. }
  28. }
  29. }
  30. }

在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中。这样不需要定义顶部变量了。

代码语言:javascript
复制
environment {    approvalMap = ''}

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一.简介
  • 二.input步骤复杂用法
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档