如何在Jenkins种子作业中实现可以被JCasC providerEnv覆盖的可选参数

问题描述

我知道如何将参数传递给JCasC的种子作业(通过providedEnv s),并且我知道如何在种子作业中设置认参数,但是我不知道如何将两者结合起来。

我想这样做是因为我的工作可以多种方式使用,因此应该可以通过providedEnv来控制(无论它们是否在jenkins.yml中定义)。

这是我失败的尝试:

jenkins.yml

...
  - providedEnv:
      AGENT: 'docker-host'
      JOB_NAME: 'Test Seed Job Params'
      TEST_ParaM_DEFAULT_FALSE_OVERRIDE_TRUE: 'true'
      TEST_ParaM_DEFAULT_TRUE_OVERRIDE_FALSE: 'false'
  - file: /var/casc_configs/seed_jobs/param_test.groovy

param_test.groovy

pipelineJob("Test Params") {
    description("")
    keepDependencies(false)
    parameters {
        wHideParameterDeFinition {
            name('AGENT')
            defaultValue("${AGENT}")
            description('Node on which to run.')
        }
        booleanParam(
            "TEST_ParaM_DEFAULT_FALSE_OVERRIDE_TRUE","${TEST_ParaM_DEFAULT_FALSE_OVERRIDE_TRUE ?: false}".toBoolean(),"Test param."
        )
        booleanParam(
            "TEST_ParaM_DEFAULT_TRUE_OVERRIDE_FALSE","${TEST_ParaM_DEFAULT_FALSE_OVERRIDE_TRUE ?: true }".toBoolean(),"Test param."
        )
        booleanParam(
            "TEST_ParaM_DEFAULT_TRUE","${TEST_ParaM_DEFAULT_TRUE ?: true}".toBoolean(),"Test param."
        )
        booleanParam(
            "TEST_ParaM_DEFAULT_FALSE","${TEST_ParaM_DEFAULT_FALSE ?: false}".toBoolean(),"Test param."
        )
    }
}

错误

groovy.lang.MissingPropertyException: No such property: TEST_ParaM_DEFAULT_TRUE for class: javaposse.jobdsl.dsl.helpers.BuildParametersContext
    at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:53)
    at org.codehaus.groovy.runtime.callsite.PogoGetPropertySite.getProperty(PogoGetPropertySite.java:52)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callGroovyObjectGetProperty(AbstractCallSite.java:307)
    at script$_run_closure1$_closure2.doCall(script:22)
    at script$_run_closure1$_closure2.doCall(script)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    ...

据我所知,TEST_ParaM_DEFAULT_FALSE_OVERRIDE_TRUETEST_ParaM_DEFAULT_TRUE_OVERRIDE_FALSE可以工作,但是在Jenkins启动期间,我在jenkins.yml中未指定任何内容的中断了。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)