jenkins 如何知道该管道是由计划触发的

lyfkaqu1  于 2023-01-20  发布在  Jenkins
关注(0)|答案(1)|浏览(149)

我有一个管道,它是由push to SCM触发的。我还希望每晚触发管道,这样我就可以添加一个带有cron字符串的触发器。
现在我想知道管道是由于预定的触发器还是从外部触发的。有什么方法可以区分这一点吗?-我喜欢在夜间运行时包含集成测试(例如,通过添加一个maven目标或给maven一个系统属性),但定期排除它们:

pipeline {
    agent ...
    tools ...
    triggers {
        cron('H 0 * * *')
    }
    stages {
        stage('Example') {
            steps {
                .... pseudo code:
                if trigger was schedule
                   mvn test -Dintegration-tests=true
                else
                   mvn test
            }
        }
    }
}

例如,是否有一种方法可以在触发器内部设置一个变量,该变量可以在阶段内部使用?

uidvcgyl

uidvcgyl1#

我是这样解决的:

isTriggeredByCron = currentBuild.getBuildCauses('hudson.triggers.TimerTrigger$TimerTriggerCause')

在某个阶段,您可以使用bool,然后:

stage('My stage')
{
    when { expression { isTriggeredByCron } }

    steps
    {
        ...
    }
}

相关问题