Jenkins多分支管道的“定期建造”

xpcnnkqh  于 2023-03-29  发布在  Jenkins
关注(0)|答案(6)|浏览(165)

我正在使用Pipeline插件运行Jenkins 2。我已经设置了一个多分支Pipeline项目,其中每个分支(master,develop等)在根目录中都有一个Jenkinsfile。设置这个很简单。但是,我不知道如何让每个分支定期运行(不是分支索引),即使代码没有更改。我需要在Jenkinsfile中放入什么才能启用定期构建?

bfhwhh0e

bfhwhh0e1#

如果你使用声明式风格的Pipeline,并且只想在特定的分支上触发构建,你可以这样做:

String cron_string = BRANCH_NAME == "master" ? "@hourly" : ""

pipeline {
  agent none
  triggers { cron(cron_string) }
  stages {
    // do something
  }
}

在Jenkins Jira上发现

oipij1gg

oipij1gg2#

如果你使用的是声明式的Jenkinsfile,那么你可以使用triggers指令。

pipeline {
    agent any
    triggers {
        cron('H 4/* 0 0 1-5')
    }
    stages {
        stage('Example') {
            steps {
                echo 'Hello World'
            }
        }
    }
}
oknrviil

oknrviil3#

这对我很有效:

pipeline {
  triggers {
    cron(env.BRANCH_NAME == 'development' ? 'H */12 * * *' : '')
  }
}

查看更多文章

ha5z0ras

ha5z0ras4#

我能够找到一个例子来说明这一点丢弃旧的构建,这也是我想要的。
Jenkinsfile在jenkins-infra/jenkins.io:

properties(
    [
        [
            $class: 'BuildDiscarderProperty',
            strategy: [$class: 'LogRotator', numToKeepStr: '10']
        ],
        pipelineTriggers([cron('H/30 * * * *')]),
    ]
)
jw5wzhpr

jw5wzhpr5#

对于参数化周期性运行或调度触发器,可以使用如下。

triggers{
    parameterizedCron env.BRANCH_NAME == "develop" ? '''H 03 * * * % buildSlave=vm1;testSlave=vm2;HYPERVISOR=vbox;VERSION=10.5.0.0
H 03 * * * % buildSlave=vm1;testSlave=vm2;HYPERVISOR=workstation;VERSION=10.5.0.0''' : ""
}
juzqafwq

juzqafwq6#

我遇到了上述解决方案的问题。
我不是一个Jenkins向导,所以不确定我是否使用了旧的格式/语法或其他东西,但以下内容对我来说是有效的。

#!/usr/bin/env groovy
properties(
    [
        pipelineTriggers([
                [
                    $class: 'TimerTrigger',
                    spec: 'H 7,19 * * *'
                ]
         ])
    ]
)

确定自:https://github.com/jenkinsci/jenkins/blob/master/core/src/main/java/hudson/triggers/TimerTrigger.java

相关问题