一段时间后自动停止重复执行Jenkins Job



我想手动启动管道作业。该作业应每天运行,七天后自动停止。有办法做到这一点吗?

AFAIK对此没有OOB解决方案。但是,您可以使用Groovy实现一些东西来实现您需要的东西。例如,检查以下管道。在下面的管道中,如果手动触发,我将添加一个每天运行的Cron表达式,然后在经过预定义的运行次数后删除corn表达式。你应该能够微调以下内容,并达到你所需要的。

def expression = getCron()
pipeline {
agent any
triggers{ cron(expression) }
stages {
stage('Example') {
steps {
script {
echo "Build"
}
}
}
}
}
def getCron() {

def runEveryDayCron = "0 9 * * *" //Runs everyday at 9
def numberOfRunsToCheck = 7 // Will run 7 times

def currentBuildNumber = currentBuild.getNumber()
def job = Jenkins.getInstance().getItemByFullName(env.JOB_NAME)

for(int i=currentBuildNumber; i > currentBuildNumber - numberOfRunsToCheck; i--) {
def build = job.getBuildByNumber(i)
if(build.getCause(hudson.model.Cause$UserIdCause) != null) { //This is a manually triggered Build
return runEveryDayCron
}
}
return ""
}

最新更新