jenkins - Jenkinsfile 一种类型的参数而不是两种类型,将选择转换为字符串或字符串转换为选择
问题描述
我正在使用两个参数,一个是选择(ID),另一个是字符串(NID),但值是相同的。要求是仅使用参数选项或字符串。是否可以将选择参数转换为字符串或字符串转换为选择参数?这样我就可以使用一个参数和一个部署功能。
def deploy1(env) {
step([$class: 'UCDeployPublisher',
siteName: siteName,
deploy: [
$class: 'com.urbancode.jenkins.plugins.ucdeploy.DeployHelper$DeployBlock',
deployApp: appName,
deployEnv: 'DEV',
deployVersions: "${compName}:${version}",
deployProc: simpleDeploy,
deployOnlyChanged: false,
deployReqProps: "ID=${params.ID}" ===> string paramater
]])
def deploy2(env) {
step([$class: 'UCDeployPublisher',
siteName: siteName,
deploy: [
$class: 'com.urbancode.jenkins.plugins.ucdeploy.DeployHelper$DeployBlock',
deployApp: appName,
deployEnv: 'DEV',
deployVersions: "${compName}:${version}",
deployProc: simpleDeploy,
deployOnlyChanged: false,
deployReqProps: "ID=${params.NID}" ===> Needs choice paramater
]])
parameters {
choice(
name: 'ID',
choices: [ '8922', '9292', '3220' ]
)
string(
name: 'NID',
defaultvalue: '8922,9292,3220'
)
stage (DEV') {
steps {
script {
if (params.ENVIRONMENT == "dev"){
deploy1('devl') ===> this will call my deploy function
}
}
}
}
解决方案
是的,您可以使用以下方法将字符串参数转换为数组split
:
下面是一个示例:
// Define list which would contain all servers in an array
def ID= []
pipeline {
agent none
parameters
{
// Adding below as example string which is passed from paramters . this can be changed based on your need
// Example: Pass NID list as , separated string in your project. This can be changed
string(name: 'NID', defaultValue:'8922,9292,3220', description: 'Enter , separated NID values in your project e.g. 8922,9292,3220')
}
stages {
stage('DEV') {
agent any
steps {
script
{
// Update ID list
ID= params.NID.split(",")
// You can loop thorugh the ID list
for (myid in ID)
{
println ("ID is : ${myid}")
}
}
}
}
}
}
推荐阅读
- sql - 在 sql server 2008 中转换浮点数与数字
- angular - Angular7,Material2,页面滚动到打开对话框的顶部
- corda - java.lang.IllegalStateException:期待在当前链上找到事务集
- python - tkinter 绑定 keyRelease 就像 keyPress 一样工作
- r - 将徽标添加到 R 中的 grid.table PDF 输出
- javascript - jQuery .each 和 setTimeout 不起作用
- html - 具有固定定位的切片背景图像
- javascript - 为什么 ng-change 不适用于 angularjs 中的自定义指令
- javascript - 将华氏温度转换为摄氏温度
- javascript - 使用特定 HTML 元素的坐标添加到 DOM 时,DIV 中的 SVG 不显示