Jenkins job DSL plugin - hidden parameter

2019-05-26 22:45发布

问题:

I am using the Jenkins hidden parameter plugin but I cant find the syntax to write it in DSL like I am doing with other parameters.

For example: https://jenkinsci.github.io/job-dsl-plugin/#method/javaposse.jobdsl.dsl.helpers.BuildParametersContext.activeChoiceParam

Is there any way to reflect hidden parameter in DSL?

回答1:

Job DSL has no built-in support for the Hidden Parameter plugin, so it's not mentioned in the API viewer. But it's supported by the Automatically Generated DSL:

job('example') {
  parameters {
    wHideParameterDefinition {
      name('FOO')
      defaultValue('bar')
      description('lorem ipsum')
    } 
  }
}


回答2:

BEfore using the declarative pipeline syntax (described in jenkinsci/pipeline-model-definition-plugin), you would have used:

  • the groovy-based DSL plugin
  • in combination with the JENKINS Mask Passwords Plugin (PR 755)

But with the pure DSL pipeline syntax, this is not yet supported (April 2017).

  • The PR 34 (a secret step) has been rejected
  • The following issues are still open:
    • "JENKINS-27386: Access credentials value from workflow Groovy script" (when to be implemented in a DSL pipeline)
    • "JENKINS-27398: Pipeline-as-Code CredentialsProvider for a job" (which would at least allow you tu use credentials as a workaround to access secret values)

The last issue though points out to JENKINS-29922 (Promote delegates of metasteps to top-level functions, deprecate $class) and adds the comment:

JENKINS-29922 is implemented, so assuming a @Symbol is defined for each credentials kind, and a credentials step is marked metaStep, you could write more simply:

usernamePassword id: 'hipchat-login', username: 'bob', password: 'abc/def+GHI0123='
hipchat server: …, message: …, credentialsId: 'hipchat-login'

or even allow the id to be generated, and return it from the step:

hipchat server: …, message: …, credentialsId: usernamePassword(username: 'bob', password: 'abc/def+GHI0123=')

While that is encrypted, that is not exactly "hidden" though.