Jenkins input插件最佳实践(交互)_分享DevOps持续集成点击关注可弹出隐藏图片

End

Jenkins input插件最佳实践(交互)_分享_02Jenkins input插件最佳实践(交互)_分享_03

 

“                

业精于勤荒于嬉,行成于思毁于随。

”            

 

 

Jenkins input插件最佳实践(交互)_分享_04

1

简介

你是否用过Shell编程中的read交互式赋值? 是否用过Python中的input()函数完成在屏幕中的交互赋值操作呢? 

 

今天要给大家介绍的是在实际的流水线中如何使用强大的input方式与用户完成交互。我整理了几个常用的方式,需要能够给你带来帮助。

 

  • 多服务发布流水线,让用户选择对特定的服务进行操作。

 

Jenkins input插件最佳实践(交互)_分享_05

2

生成Jenkinsfile

首先需要在插件管理中安装此插件“Pipeline:InputStep”。

站点地址:https://plugins.jenkins.io/pipeline-input-step

 

如下图所示,对应用回滚做出选择。提示信息为“是否进行回滚”,自定义的id号为123。确认按钮的提示文字为“是的”。允许提交人为我自己的账号。配置了a=1这个参数会在运行后传递给变量。最后增加了一个字符参数用于输入输入。

 

一起试验一下吧!

 

安装插件

Jenkins input插件最佳实践(交互)_分享_06

 

学习语法

Jenkins input插件最佳实践(交互)_分享_07

Jenkinsfile

  •  
node(){    stage("test"){        result =  input   id: '123',                 message: '是否执行应用回滚?',                 ok: '是的',                 parameters: [string(defaultValue: 'devops-service', description: '', name: 'serviceName', trim: false)],                 submitter: 'lizeyang',                 submitterParameter: 'a=1'                                      println(result)    }}

 

构建详情

Jenkins input插件最佳实践(交互)_分享_08

 

Blueocean

Jenkins input插件最佳实践(交互)_分享_09

 

查看详细的日志

Jenkins input插件最佳实践(交互)_分享_10Console Output
Started by user lizeyang
Replayed #14
Running in Durability level: MAX_SURVIVABILITY
[Pipeline] Start of Pipeline
[Pipeline] node
Running on Jenkins in /var/lib/jenkins/workspace/devops-service-abcd111@2
[Pipeline] {
[Pipeline] stage
[Pipeline] { (test)
[Pipeline] input
Input requested
Approved by lizeyang
[Pipeline] echo
{a=1=zeyangli, serviceName=devops-service}
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
Finished: SUCCESS


Jenkins input插件最佳实践(交互)_分享_05

3

多种参数类型支持

如下图所示,你应该知道了其实在参数化构建job的参数,都可以用于input参数。比如常用的有:

 

  • 字符串参数
  • 选项参数
  • 多选参数
  • 布尔参数
  • 凭据参数
  • 等等参数

 

凭借着如此强大的参数类型,基本上满足了日常的需要。

 

Jenkins input插件最佳实践(交互)_分享_12


Jenkins input插件最佳实践(交互)_分享_05

4

总结

我们使用input插件能够完成不同场景下的交互,使流水线更加灵活。遗憾的是有一些特殊的参数类型在Blueocean还不支持,希望日后会更加强大 @Jenkins。

 

Jenkins input插件最佳实践(交互)_分享_14

 

Jenkins input插件最佳实践(交互)_分享_15         Jenkins input插件最佳实践(交互)_分享_16         

 

 

Jenkins input插件最佳实践(交互)_分享_17