每晚和每次提交后运行Jenkins管道
我们希望运行Jenkins管道:每晚和每次提交后运行Jenkins管道,jenkins,jenkins-pipeline,Jenkins,Jenkins Pipeline,我们希望运行Jenkins管道: 每晚,但仅当所选分支(dev或master)中有任何提交时 在每一次犯罪之后 需要注意的是,夜间构建还需要额外的步骤(长时间运行的集成测试) 可能吗?我们如何在Jenkinsfile中配置此功能?因此,您的问题归结为以下几个方面: 如何运行夜间构建 如果在过去24小时内没有提交,如何停止生成 我如何运行一个“长期运行”阶段,但不总是这样 让我们逐一解决这些问题 如果安装了parameterizedCron插件,则可以使用cron或parameterizedC
- 每晚,但仅当所选分支(dev或master)中有任何提交时
- 在每一次犯罪之后
可能吗?我们如何在Jenkinsfile中配置此功能?因此,您的问题归结为以下几个方面:
cron
或parameterizedCron
进行夜间构建。由于您似乎希望在所有分支机构中运行您的作业,这可能看起来像cron
,您可能需要查看git log
以了解最新提交的时间if ( currentBuildReason() == "TIMER" and env.BRANCH == "master" ) {
def gitLog = sh script: "git log", returnStdout: true
// look for the date, and stop the build
stage('Integration tests') {
agent { node { label "integration_test_slave" }}
when {
beforeAgent true
expression {params.RUN_LONG_TEST}
}
steps {
// run integration test
}
}
要在选中参数的情况下安排夜间活动,需要parameterizedCron插件:
pipeline {
agent any
triggers {
// schedule a nightly build at random time after 0am on dev branch, 1am on master
parameterizedCron(env.BRANCH_NAME == 'dev' ? '0 * * * * % RUN_LONG_TEST=true' : '')
parameterizedCron(env.BRANCH_NAME == 'master' ? '1 * * * * % RUN_LONG_TEST=true'' : '')
或者,如果只有夜总会运行该参数,您可以忽略该参数,并分析
currentBuildReason()
的值。当它等于计时器时,这些测试应该运行。因此,您的问题归结为几个:
cron
或parameterizedCron
进行夜间构建。由于您似乎希望在所有分支机构中运行您的作业,这可能看起来像cron
,您可能需要查看git log
以了解最新提交的时间if ( currentBuildReason() == "TIMER" and env.BRANCH == "master" ) {
def gitLog = sh script: "git log", returnStdout: true
// look for the date, and stop the build
stage('Integration tests') {
agent { node { label "integration_test_slave" }}
when {
beforeAgent true
expression {params.RUN_LONG_TEST}
}
steps {
// run integration test
}
}
要在选中参数的情况下安排夜间活动,需要parameterizedCron插件:
pipeline {
agent any
triggers {
// schedule a nightly build at random time after 0am on dev branch, 1am on master
parameterizedCron(env.BRANCH_NAME == 'dev' ? '0 * * * * % RUN_LONG_TEST=true' : '')
parameterizedCron(env.BRANCH_NAME == 'master' ? '1 * * * * % RUN_LONG_TEST=true'' : '')
或者,如果只有夜总会运行该参数,您可以忽略该参数,并分析
currentBuildReason()
的值。当它等于计时器时,这些测试应该运行。“仅当有任何提交”从何时开始?每次提交到任何分支后?如果没有任何提交,是否应该运行长时间运行的测试?@MaratC,前提是前一个夜间构建中有任何提交。如果没有提交,则无需触发长时间运行的测试。感谢“只有在有任何承诺的情况下”从什么时候开始?每次提交到任何分支后?如果没有任何提交,是否应该运行长时间运行的测试?@MaratC,前提是前一个夜间构建中有任何提交。如果没有提交,则无需触发长时间运行的测试。谢谢