如何通过 jenkins 文件每 2 小时触发一次 jenkis 构建



下面是我的 jenkins 文件:

#!groovy
node('EJ2Release') {
try {
deleteDir()
stage('Import') {
git url: 'https://gitlab.syncfusion.com/essential-studio/ej2-groovy-scripts.git', branch: 'master', credentialsId: env.JENKINS_CREDENTIAL_ID
shared = load 'src/shared.groovy'
}
stage('Checkout') {
checkout scm
shared.getProjectDetails()
shared.gitlabCommitStatus('running')
}
if(shared.checkCommitMessage()) {
stage('Install'){
shared.install()
}
stage('Build') {
sh 'npm run build'
}

stage('Publish') {
shared.publish()
}
if(shared.isProtectedBranch()) {
stage('SampleBrowser') {
shared.triggerSampleBrowserBuild()
} 
}
}
shared.gitlabCommitStatus('success')
deleteDir()
}
catch(Exception e) {
println(e)        
shared.gitlabCommitStatus('failed')
deleteDir()
error('Build Failed')
}
}

下面是我的时髦脚本 - https://github.com/kumaresan-subramani/jenkins-build/blob/master/groovy

我想每 2 小时触发一次我的 Jenkins 构建,我已经尝试了很多选项,但对我来说没有运气。任何人都可以对此有任何建议。

我已经在詹金斯文件中尝试过:

#!groovy
node('EJ2Release') {
try {
deleteDir()
triggers {
pollSCM 'H/10 * * * *'
}
stage('Import') {
git url: 'https://gitlab.syncfusion.com/essential-studio/ej2-groovy-scripts.git', branch: 'master', credentialsId: env.JENKINS_CREDENTIAL_ID
shared = load 'src/shared.groovy'
}
----------------etc----------
}

如果 SCM 有任何提交必须构建,pollSCM-trigger 只会触发您的构建。

如果你想每 2 小时触发一次,如果没有提交,你必须使用cron-trigger:

triggers {
cron('0 */2 * * *')
}

这里有两个问题,第一个是RNoB在他的答案中所写,你应该使用cron而不是pollSCM。第二个是你混淆了声明性和脚本化管道(有关更多信息,请参阅我的回答(。

要在脚本化管道中设置 cron 触发器,您应该使用属性步骤(可用于设置作业的大多数属性和触发器(请参阅管道语法生成器以查看安装中可用的内容(。因此,以下应该足够了:

properties([
pipelineTriggers([
cron('H H/2 * * *')
])
])
node('EJ2Release') {
try {
deleteDir()
stage('Import') {
git url: 'https://gitlab.syncfusion.com/essential-studio/ej2-groovy-scripts.git', branch: 'master', credentialsId: env.JENKINS_CREDENTIAL_ID
shared = load 'src/shared.groovy'
}
----------------etc----------
}

请注意,我将属性步骤放在节点分配之外,这意味着该步骤将在作业启动后尽快执行。再一次,这仅适用于脚本管道。

最新更新