【问题标题】:booleanParam in jenkins dsl詹金斯 dsl 中的布尔参数
【发布时间】:2017-04-12 18:59:01
【问题描述】:

我有一个这样的 jenkins groovy 脚本:

    freeStyleJob(“test”) {
        properties { githubProjectUrl(‘…’) }
        description(‘’’job description’’’.stripMargin('|'))

        logRotator{ numToKeep(100) }

        parameters {
            stringParam(’STRINGP1’, "", “STRINGP1 description”)
            stringParam('STRINGP2’, "", “StringP2 description”)
            booleanParam(‘b1’, false)
            booleanParam(‘b2’, false)
            booleanParam(‘b3’, false)
            stringParam("EMAIL_LIST", "", "Emails")
        }

        scm {
            github(‘repo’, '${STRINGP1}', 'git', ‘giturl’)
        }

        steps {
            shell '''|#!/bin/bash
                |ARGS=""
                |fi
                |if [[ ‘${b1}’ ]]; then
                |   ARGS=$ARGS" —-p b1”
                |fi
                |if [[ ‘${b2}’ ]]; then
                |   OS_ARGS=$ARGS" —-p b2”
                |fi
                |if [[ ‘${b3}’ ]]; then
                |   ARGS=$ARGS" —-p b3”
                |fi                
                |echo ${ARGS}'''.stripMargin('|')

        }

        publishers {
            archiveArtifacts {
                pattern(‘pattern’)
            }

            extendedEmail {
                ....
                }
            }

        }

    ....
  }

创建作业后,无论用户是否选中或取消选中 UI 中的布尔参数,ARGS 的值将始终为“--p b1 ---p b2 --p b3”。这意味着如果 shell 脚本中存在这三个,则将始终评估为 true。为什么会这样?

【问题讨论】:

    标签: jenkins groovy


    【解决方案1】:

    参数可从envparams 获得。当您以$b1 访问它们时,您是从env 获取它们,而不是params

    所有环境变量本质上都是字符串,因此当您将参数作为环境变量访问时,它们总是字符串。

    如果您想在输入时访问它们,请使用params

    script {
      assert env.b1 instanceof String
      assert params.b1 instanceof Boolean
    }
    

    【讨论】:

      【解决方案2】:

      至少对于流水线脚本,布尔参数实际上是字符串。所以我做了以下事情:

      parameterAsBoolean = (MY_PARAMETER == "true")
      

      【讨论】:

        【解决方案3】:

        您是否尝试过独立运行您的 shell 脚本?只是为了确保它按您的意愿运行?

        我认为您的语法可能是错误的,您的值将始终有效,因为它们存在,请检查此作为参考: How to declare and use boolean variables in shell script?

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2020-06-09
          • 1970-01-01
          • 1970-01-01
          • 2020-07-04
          • 2018-06-19
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多