Multi-line parameter description in declarative pipeline

60 views
Skip to first unread message

Al Silver

unread,
Jun 12, 2020, 11:30:00 AM6/12/20
to Jenkins Users
Hi,
  How can I have a detailed description field that is properly displayed when building with parameters.  The example below is obviously not good coding practice

parameters {
       
// Optional //

       
string(name: 'isis_thresh', defaultValue: '',
                description
: 'Threshold for ISIS Nbr last_state_change in format of 4h25s (e.g., 40s, 5m40s, 3h5m40s, 2d, 4w2d). Neighbor uptimes that are less than this value will be flagged as an error.')


   
}

I'd like to do something like this but then the output when building the job contains the tabs and looks bad... I'd like each of the lines in the output to display against the left hand margin.

parameters {

       
string(name: 'isis_thresh', defaultValue: '',
                description
: '''Threshold for ISIS Nbr last_state_change in
                                format of 4h25s (e.g., 40s, 5m40s, 3h5m40s, 2d, 4w2d).
                                Neighbor uptimes that are less than this value will
                                be flagged as an error.'''
)

   
}

Thx
Al

Slide

unread,
Jun 12, 2020, 10:20:13 PM6/12/20
to Jenkins User Mailing List
The triple quote strings are taken as is, so just remove the tabs/spaces at the start of the lines.

--
You received this message because you are subscribed to the Google Groups "Jenkins Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to jenkinsci-use...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/jenkinsci-users/cf6402d1-6a01-4ed3-a244-445366836ecfo%40googlegroups.com.

Al Silver

unread,
Jun 15, 2020, 8:45:42 AM6/15/20
to Jenkins Users
If I remove the spaces/tab at the beginning of the line, I'm left with "ugly" code that's not maintaining indentations...  Thx


On Friday, June 12, 2020 at 10:20:13 PM UTC-4, slide wrote:
The triple quote strings are taken as is, so just remove the tabs/spaces at the start of the lines.

On Fri, Jun 12, 2020, 08:29 Al Silver <asilv...@gmail.com> wrote:
Hi,
  How can I have a detailed description field that is properly displayed when building with parameters.  The example below is obviously not good coding practice

parameters {
       
// Optional //

       
string(name: 'isis_thresh', defaultValue: '',
                description
: 'Threshold for ISIS Nbr last_state_change in format of 4h25s (e.g., 40s, 5m40s, 3h5m40s, 2d, 4w2d). Neighbor uptimes that are less than this value will be flagged as an error.')


   
}

I'd like to do something like this but then the output when building the job contains the tabs and looks bad... I'd like each of the lines in the output to display against the left hand margin.

parameters {

       
string(name: 'isis_thresh', defaultValue: '',
                description
: '''Threshold for ISIS Nbr last_state_change in
                                format of 4h25s (e.g., 40s, 5m40s, 3h5m40s, 2d, 4w2d).
                                Neighbor uptimes that are less than this value will
                                be flagged as an error.'''
)

   
}

Thx
Al

--
You received this message because you are subscribed to the Google Groups "Jenkins Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to jenkins...@googlegroups.com.

Björn Pedersen

unread,
Jun 15, 2020, 10:17:21 AM6/15/20
to Jenkins Users


Am Montag, 15. Juni 2020 14:45:42 UTC+2 schrieb Al Silver:
If I remove the spaces/tab at the beginning of the line, I'm left with "ugly" code that's not maintaining indentations...  T


Not remove from the source, but from the assigment value:

"""....
   -...
  -
""..stripIndent()

Al Silver

unread,
Jun 15, 2020, 4:58:45 PM6/15/20
to Jenkins Users
Below code does not work and just throws an error when I try to run it.  I've seen examples of stripIndent but I have not been able to find a working example used inside the parameters block with declarative pipeline...

    parameters {

        string(name: 'limit', defaultValue: '',
                description: '''Limit the nodes to test against instead of testing against all nodes defined in the topology file.
                                Comma seperated list of device names. (e.g, dc21,ph22,sf21)
                                Names must be 4 character shortcut used in /etc/hosts file.'''.stripIndent())

    }

Here is the error when running the job.  Note, there are several other parameters defined the parameters block but I removed them to not clutter the explanation...All works well if removing the stripIndent() method.

org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
WorkflowScript: 43: Expected a symbol @ line 43, column 30.
                   description: '''Limit the nodes to test against instead of testing against all nodes defined in the topology file.
                                ^

WorkflowScript: 43: "error" should have 1 arguments but has 0 arguments instead. @ line 43, column 30.
                   description: '''Limit the nodes to test against instead of testing against all nodes defined in the topology file.
                                ^

WorkflowScript: 43: "error" should have 1 arguments but has 0 arguments instead. @ line 43, column 30.
                   description: '''Limit the nodes to test against instead of testing against all nodes defined in the topology file.
                                ^

3 errors

	at org.codehaus.groovy.control.ErrorCollector.failIfErrors(ErrorCollector.java:310)
	at org.codehaus.groovy.control.CompilationUnit.applyToPrimaryClassNodes(CompilationUnit.java:1085)
	at org.codehaus.groovy.control.CompilationUnit.doPhaseOperation(CompilationUnit.java:603)
	at org.codehaus.groovy.control.CompilationUnit.processPhaseOperations(CompilationUnit.java:581)
	at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:558)
	at groovy.lang.GroovyClassLoader.doParseClass(GroovyClassLoader.java:298)
	at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:268)
	at groovy.lang.GroovyShell.parseClass(GroovyShell.java:688)
	at groovy.lang.GroovyShell.parse(GroovyShell.java:700)
	at org.jenkinsci.plugins.workflow.cps.CpsGroovyShell.doParse(CpsGroovyShell.java:142)
	at org.jenkinsci.plugins.workflow.cps.CpsGroovyShell.reparse(CpsGroovyShell.java:127)
	at org.jenkinsci.plugins.workflow.cps.CpsFlowExecution.parseScript(CpsFlowExecution.java:561)
	at org.jenkinsci.plugins.workflow.cps.CpsFlowExecution.start(CpsFlowExecution.java:522)
	at org.jenkinsci.plugins.workflow.job.WorkflowRun.run(WorkflowRun.java:337)
	at hudson.model.ResourceController.execute(ResourceController.java:97)
	at hudson.model.Executor.run(Executor.java:428)
Finished: FAILURE


Reply all
Reply to author
Forward
0 new messages