Want to run only the newest job of a project from the build queue and cancel other:

55 views
Skip to first unread message

hari prasad

unread,
Jan 3, 2017, 1:25:02 PM1/3/17
to jenkins...@googlegroups.com
let’s assume a pullrequests  triggered a build on a  builder,  before completing this build if we have some 5 to 6  pullrequests  on the same branch all PR’s will be queud for individual builds.

I found a solution for running only new job and cancle others 

def q = Jenkins.instance.queue

//Find items in queue that match <project name>
def queue = q.items.findAll { it.task.name.startsWith('sample_project') }
//get all jobs id to list
def queue_list = []
queue.each { queue_list.add(it.getId()) }
//sort id's, remove last one - in order to keep the newest job, cancel the rest
queue_list.sort().take(queue_list.size() - 1).each { q.doCancelItem(it) }

but I'm using pipeline script wand when I try to run like below :

"
node("${NODE}") {

        def description = "${PR_NO} ${TITLE}"
        currentBuild.setDescription("${PR_NO}")

        try {
                check_for_queue()
           	stage "Check for Build Location"
	        sh "/projects/ngidelde/HG/Jenkins_Utils/Weekly_PEG_Wraper.sh ${Weekly_Branch}  build_folder_creation"

	        stage "Clone Loadtools"
	        sh "/projects/ngidelde/HG/Jenkins_Utils/Weekly_PEG_Wraper.sh ${Weekly_Branch}  clone_load_tools"

	        stage "Checkout PEG"
        	sh "/projects/ngidelde/HG/Jenkins_Utils/Weekly_PEG_Wraper.sh ${Weekly_Branch}  checkout_peg"

	        stage "Update Forest"
        	sh "/projects/ngidelde/HG/Jenkins_Utils/Weekly_PEG_Wraper.sh ${Weekly_Branch}  update_forest"

	        stage "Get Version"
        	//sh "/projects/ngidelde/HG/Jenkins_Utils/Weekly_PEG_Wraper.sh ${Weekly_Branch}  get_version"

	        stage "Build"
        	//sh "/projects/ngidelde/HG/Jenkins_Utils/Weekly_PEG_Wraper.sh ${Weekly_Branch}  build"

	        stage "Push HG"
        	//sh "/projects/ngidelde/HG/Jenkins_Utils/Weekly_PEG_Wraper.sh ${Weekly_Branch}  pushHG_peg"

	        stage "get_packpath"
        	//sh "/projects/ngidelde/HG/Jenkins_Utils/Weekly_PEG_Wraper.sh ${Weekly_Branch}  get_packpath"

	        stage "Build links"
        	//sh "/projects/ngidelde/HG/Jenkins_Utils/Weekly_PEG_Wraper.sh ${Weekly_Branch}  build_links"

		

        }

        catch (err) {

        currentBuild.result = "FAILURE"
        mail bcc: '', body: "Hello,\n\nJenkins has detected a failed build on builder PEG while building ${Weekly_Branch}.\nFull details are available at: ${env.BUILD_URL}.\nSincerely,\n-Jenkins", cc: '', from: 'hari....@amadeus.com', replyTo: '', subject: "build failure in PEG on ${Weekly_Branch}", to: 'hari....@amadeus.com'


        throw err
    }

}


@NonCPS
def check_for_queue()
{
def q = Jenkins.instance.queue
def queue = q.items.findAll { it.task.name.startsWith("PEG_PRD_8-5") }
def queue_list = []
queue.each { queue_list.add(it.getId()) }
queue_list.sort().take(queue_list.size() - 1).each { q.doCancelItem(it) }
}

                        
                                          
"



giving below error :
groovy.lang.MissingPropertyException: No such property: it for class: WorkflowScript
	at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:53)
	at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.getProperty(ScriptBytecodeAdapter.java:458)
	at org.kohsuke.groovy.sandbox.impl.Checker$4.call(Checker.java:243)
	at org.kohsuke.groovy.sandbox.GroovyInterceptor.onGetProperty(GroovyInterceptor.java:52)
	at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.onGetProperty(SandboxInterceptor.java:308)
	at org.kohsuke.groovy.sandbox.impl.Checker$4.call(Checker.java:241)
	at org.kohsuke.groovy.sandbox.impl.Checker.checkedGetProperty(Checker.java:238)
	at org.kohsuke.groovy.sandbox.impl.Checker.checkedGetProperty(Checker.java:221)
	at org.kohsuke.groovy.sandbox.impl.Checker$checkedGetProperty.callStatic(Unknown Source)
	at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallStatic(CallSiteArray.java:56)
	at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callStatic(AbstractCallSite.java:194)
	at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callStatic(AbstractCallSite.java:230)
	at WorkflowScript$_check_for_queue_closure1.doCall(WorkflowScript:56)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:601)
	at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:93)
	at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325)
	at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:294)
	at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1024)
	at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:42)
	at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48)
	at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113)
	at org.codehaus.groovy.runtime.callsite.BooleanReturningMethodInvoker.invoke(BooleanReturningMethodInvoker.java:51)
	at org.codehaus.groovy.runtime.callsite.BooleanClosureWrapper.call(BooleanClosureWrapper.java:53)
	at org.codehaus.groovy.runtime.DefaultGroovyMethods.findAll(DefaultGroovyMethods.java:4281)
	at org.codehaus.groovy.runtime.DefaultGroovyMethods.findAll(DefaultGroovyMethods.java:4170)
	at org.codehaus.groovy.runtime.dgm$198.invoke(Unknown Source)
	at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite$PojoMetaMethodSiteNoUnwrapNoCoerce

any idea onthis ?


--
Thanks. With kind regards,
HariPrasadChalla



Reply all
Reply to author
Forward
0 new messages