Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Jenkins pipelineTriggers option crashes

Trying to use a cron-triggered build in a Jenkins declarative pipeline script:

options
{
    disableConcurrentBuilds()
    timeout(time: 1, unit: 'HOURS')
    buildDiscarder(logRotator(numToKeepStr: '5'))
    pipelineTriggers([cron('H 0 * * *')])
}

When run, throws this Exception:

org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
WorkflowScript: 30: Invalid option type "pipelineTriggers". Valid option types: [buildDiscarder, catchError, disableConcurrentBuilds, overrideIndexTriggers, retry, script, skipDefaultCheckout, skipStagesAfterUnstable, timeout, timestamps, waitUntil, withContext, withCredentials, withEnv, ws] @ line 30, column 3.
        pipelineTriggers([cron('H 0 * * *')])
     ^

1 error

    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.reparse(CpsGroovyShell.java:67)
    at org.jenkinsci.plugins.workflow.cps.CpsFlowExecution.parseScript(CpsFlowExecution.java:430)
    at org.jenkinsci.plugins.workflow.cps.CpsFlowExecution.start(CpsFlowExecution.java:393)
    at org.jenkinsci.plugins.workflow.job.WorkflowRun.run(WorkflowRun.java:238)
    at hudson.model.ResourceController.execute(ResourceController.java:97)
    at hudson.model.Executor.run(Executor.java:405)
Finished: FAILURE

Anyone know the correct syntax or a workaround for a cron trigger in pipeline script?

like image 302
BadmintonCat Avatar asked Jan 05 '23 03:01

BadmintonCat


1 Answers

From JENKINS-37731, I see a cron used with the following syntax:

properties([
    pipelineTriggers([
        cron('H/5 * * * *')
    ])
])

See for instance as an example the jenkins-infra/jenkins.io/Jenkinsfile.

Since you are using a declarative pipeline, you will need to inject those properties: see "Jenkins Declarative Pipeline: How to inject properties"

You can use the script step inside the steps tag to run arbitrary pipeline code.

That is because pipelineTriggers and parameters are excluded from job properties, as seen in pipeline/modeldefinition/model/Options.groovy

public final static List<String> BLOCKED_PROPERTIES = ["pipelineTriggers", "parameters"]
like image 58
VonC Avatar answered Jan 06 '23 20:01

VonC