如果用户未输入活动选择参数化管道生成的值,则退出管道



如果用户没有为单选/多选/字符串管道参数的活动选择参数选择任何值,我希望中止管道。

例如,我有名为"IPAddress"的活动选择反应参数,类型为"多选",带有时髦脚本,如下所示:

if (Location.equals("MyTown")) {
return["DDL1", "DDL2", "DDL3", "DDL4"]
} else if (Location.equals("Your Town")) {
return["DDP1", "DDP2"]
} else {
return ["Select an IP from the drop-down"]
}

因此,一旦我运行管道,我就会看到 IPAddress 的"从下拉列表中选择一个 IP"。

现在,如果用户没有从下拉列表中选择任何内容,管道应该会失败并中止。

在管道脚本中,我编写了以下条件检查,尽管用户忽略选择任何 IPAddress,但无法检查条件。

def ex(param){
    currentBuild.result = 'ABORTED'
    error('BAD PARAM: ' + param)
}
pipeline {          
    agent any       
        stages {
            stage ("Pre-Check Parameters") {        
                steps {
                echo "Pre-Check called in pipeline"
                 script {
                    if ("${params.IPAddress}" == null) {ex("IPAddress")}
                    //if ("${params.myEnv}" == null) {ex("b")}
                    //if ("${params.myLoc}" == null) {ex("c")}
                    }            
               }              
             } 
          }
      }

你能建议这里可能有什么问题吗?

您对使用input步骤有任何限制吗?

def days=''
pipeline{
agent any;
stages {
    stage('master'){
       steps{ 
           script { 
               try {
                    timeout(time:10, unit:'SECONDS') {
                        days = input message: 'Please enter the time window in number of days', ok: 'Fetch Statistics', parameters: [string(defaultValue: '90', description: 'Number of days', name: 'days', trim: true)] 
                    }
                }
                catch (err){
                   error("No custom value has been entered for number of days.")
                }
           }
       }
    }
  }
}

要确定字符串是否为空,您可以使用方法 .trim() .它将从字符串中删除前导空格和尾随空格。两个神奇的词是"时髦的真相"。空字符串在 Groovy 中为假。这样可以更轻松地计算条件表达式。意味着在您的情况下,如果您将.trim()与 if 条件结合使用,则字符串的 Groovy Truth 值将用于计算。

如果将管道更改为以下内容,则管道应该可以正常工作。它将检查您的变量是空还是空:

script {
    if (!params.IPAddress?.trim()) {
        ex("IPAddress")
    }
}

相关内容

  • 没有找到相关文章