尝试在詹金斯声明管道脚本中使用cron触发的构建:
options
{
disableConcurrentBuilds()
timeout(time: 1, unit: 'HOURS')
buildDiscarder(logRotator(numToKeepStr: '5'))
pipelineTriggers([cron('H 0 * * *')])
}
运行时,引发此例外:
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
任何人都知道管道脚本中的cron触发器的正确语法或解决方法?
来自jenkins-37731,我看到一个带有以下语法的cron:
properties([
pipelineTriggers([
cron('H/5 * * * *')
])
])
例如,请参见示例jenkins-infra/jenkins.io/Jenkinsfile
。
由于您使用的是声明的管道,因此需要注入这些属性:请参阅" Jenkins声明管道:如何注入属性"
您可以在
steps
标签内使用script
步骤来运行任意管道代码。
那是因为pipelineTriggers
和parameters
被排除在Job属性中,如pipeline/modeldefinition/model/Options.groovy
public final static List<String> BLOCKED_PROPERTIES = ["pipelineTriggers", "parameters"]
这是您使用管道语法进行操作的方式:
pipeline {
agent any
triggers {
cron('H 4/* 0 0 1-5')
}
stages {
stage('Example') {
steps {
echo 'Hello World'
}
}
}
}
此外,PollSCM定义了一个常规间隔,詹金斯应检查新的源更改。如果存在新的更改,则管道将被重新触发。例如:
// every 15 minutes
triggers {
pollSCM('H 4/* 0 0 1-5')
}