当前位置: 首页 > 知识库问答 >
问题:

如何在Jenkins脚本流水线中设置多行参数化cron作业?

宇文金鑫
2023-03-14
properties([
    //https://stackoverflow.com/questions/35370810/how-do-i-use-jenkins-pipeline-properties-step
    parameters([
        //note here that the default will be the element you have as a first choice in the array
        choice(name: 'environmentName', choices: ['PROD', 'STAGE'], description: 'Choose the environment you want to run automation tests'),
    ]),

    //explained here: https://stackoverflow.com/questions/44113834/trigger-hourly-build-from-scripted-jenkinsfile
    //recall that ANY change you do here you will need to execute the job once manually for the new cron parameter to be updated, pushing it is not enough
    //minutes, hours, day of month, month, day of week  //H is any first available (here minute) of the hour according to resources
    pipelineTriggers([
       parameterizedCron('*/2 * * * 0-4 %environmentName=STAGE')
    ]),
])        
properties([
    //https://stackoverflow.com/questions/35370810/how-do-i-use-jenkins-pipeline-properties-step
    parameters([
        //note here that the default will be the element you have as a first choice in the array
        choice(name: 'environmentName', choices: ['PROD', 'STAGE'], description: 'Choose the environment you want to run automation tests'),
    ]),

    //explained here: https://stackoverflow.com/questions/44113834/trigger-hourly-build-from-scripted-jenkinsfile
    //recall that ANY change you do here you will need to execute the job once manually for the new cron parameter to be updated, pushing it is not enough
    //minutes, hours, day of month, month, day of week  //H is any first available (here minute) of the hour according to resources
    pipelineTriggers([
        //cron('H 23 * * 0-4') //this works with the DEFAULT parameters
        parameterizedCron { //this is documented here: https://github.com/jenkinsci/parameterized-scheduler-plugin/blob/master/README.md
            parameterizedSpecification( '''
                # leave spaces where you want them around the parameters. They'll be trimmed
                #*/2 * * * * %environmentName=STAGE;SomeOtherVariable=Pluto
                #you may repeat multiple configuration if you want
                */2 * * * 0-4 %environmentName=STAGE
            ''' )
        }
    ]),
])
java.lang.ClassCastException: org.jenkinsci.plugins.parameterizedscheduler.ParameterizedTimerTrigger.parameterizedSpecification expects class java.lang.String but received class org.jenkinsci.plugins.workflow.cps.CpsClosure2

共有1个答案

惠泳
2023-03-14

答案可能就这么简单:

parameterizedCron( '''
          */2 * * * 0-4 %environmentName=STAGE
          */3 * * * 0-4 %environmentName=PROD
        ''' )

这意味着您不需要包含parameterizedspecification的更复杂形式

不明白这为什么会起作用

 类似资料:
  • 问题内容: 如何通过PHP脚本设置cron作业。 问题答案: 这将添加一个每天上午9:30运行的脚本。 如果从Web服务器运行此脚本,可能会遇到权限问题。为了解决这个问题,我建议使用另一种方法。 这是一种可能的解决方案。创建需要运行的脚本列表。您可以将其保存在文本文件或数据库中。创建一个脚本来读取此列表,并每分钟或每5分钟(使用cronjob)运行它。您的脚本将需要足够聪明,以决定何时运行脚本列表

  • 问题内容: 假设我在Jenkins中有一个Groovy脚本,其中包含多行shell脚本。如何在该脚本中设置和使用变量?正常方式会产生错误: 捕获:groovy.lang.MissingPropertyException:否这样的属性:foo对于类:groovy.lang.Binding 问题答案: 您需要更改为三重单引号或转义美元 然后,您将跳过常规模板,这就是给您这个问题的原因

  • 问题内容: 在我们的centos6服务器中。我想以apache用户的身份在cron作业中执行php脚本,但不幸的是它不起作用。 这是crontab的版本(crontab -uapache -e) 这是“ test.php”文件的源代码,可以与“ apache”用户作为所有者正常工作。 我尝试将php替换为php的完整路径(/ usr / local / php / bin / php),但它也不起

  • 你好,詹金斯的朋友们, 我创建了一个JenkinsFreestyle项目,其中包含“执行Groovy脚本”步骤。从脚本中,我想在同一个Jenkins服务器上触发另一个参数化作业。 有人知道我该怎么做吗?

  • clean install build-helper:parse-version版本:set-dnewversion=${parsedversion.majorversion}.${parsedversion.minorversion}.${parsedversion.nextincrementalversion}-快照版本:commit 这和预期的一样,没有任何问题。但是,当我试图使用以下命令执

  • AWS Glue的stackoverflow的多个答案是设置--conf表参数。但是,有时在一个作业中,我们需要在一个作业中设置多个--conf键值对。 我尝试了以下方法来设置多个--conf值,所有结果都是错误的: 添加另一个名为--conf的表参数。这将导致AWS仪表板删除名为--conf的第二个参数,并将焦点设置为名为--conf的第一个参数的值。Terraform还只考虑具有键的两个表参数