下面是我的詹金斯文件:
#!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构建,我尝试了很多选择,但对我来说没有运气。任何人都可以提出任何建议来解决这个问题。
我在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----------
}
答案 0 :(得分:2)
如果必须由SCM进行任何提交,则pollSCM
触发器仅触发您的构建。
如果您还想在没有提交的情况下每2小时触发一次,则必须使用cron
-trigger:
triggers {
cron('0 */2 * * *')
}
答案 1 :(得分:1)
这里有两个问题,第一个是RNoB在他的答案中写道,您应该使用cron而不是pollSCM。第二个问题是您混淆了声明式和脚本化管道(see my answer here for more information)。
要在脚本化管道中设置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----------
}
请注意,我将属性步骤放置在节点分配之外,这意味着该步骤在作业开始后尽快执行。再一次,这仅适用于脚本化管道。