Skip to main content
Glama

cancelQueuedBuild

Cancel pending Jenkins builds before execution to free resources and manage queue efficiently by specifying job name and optional queue ID.

Instructions

Cancel a pending/queued Jenkins build that hasn't started yet

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
jobFullNameYesFull path of the Jenkins job
queueIdNoSpecific queue item ID to cancel (optional, cancels all queued items for the job if not provided)

Implementation Reference

  • Main handler function for canceling queued Jenkins builds. Handles specific queueId or all queued items for a job by fetching queue, filtering, and canceling via API.
    export async function cancelQueuedBuild(client, args) { const { jobFullName, queueId = null } = args; const jobPath = encodeJobPath(jobFullName); try { // If queueId is provided, cancel that specific item if (queueId) { const cancelResponse = await client.post( `${client.baseUrl}/queue/cancelItem`, `id=${queueId}`, { headers: { "Content-Type": "application/x-www-form-urlencoded", }, } ); if ( isSuccessStatus(cancelResponse.status) || cancelResponse.status === 204 ) { return success("cancelQueuedBuild", { message: `Queue item #${queueId} cancelled successfully`, queueId, method: "direct", }); } else { return failure( "cancelQueuedBuild", `Failed to cancel queue item #${queueId}`, { statusCode: cancelResponse.status } ); } } // If no queueId provided, find and cancel all queued items for this job const queueResponse = await client.get( `${client.baseUrl}/queue/api/json` ); if (queueResponse.status !== 200) { return failure( "cancelQueuedBuild", "Failed to fetch queue information", { statusCode: queueResponse.status } ); } const queueItems = queueResponse.data.items || []; // Find items for this specific job const jobQueueItems = queueItems.filter((item) => { if (item.task && item.task.url) { const itemJobPath = item.task.url .replace(client.baseUrl, "") .replace(/^\//, "") .replace(/\/$/, ""); const targetJobPath = `job/${jobPath}`.replace(/\/$/, ""); return itemJobPath === targetJobPath; } if (item.task && item.task.name) { const jobName = jobFullName.split("/").pop(); return ( item.task.name === jobFullName || item.task.name === jobName ); } return false; }); if (jobQueueItems.length === 0) { return failure( "cancelQueuedBuild", `No queued builds found for job: ${jobFullName}`, { totalQueueItems: queueItems.length } ); } // Cancel all found queue items for this job const cancelResults = []; for (const item of jobQueueItems) { try { const cancelResponse = await client.post( `${client.baseUrl}/queue/cancelItem`, `id=${item.id}`, { headers: { "Content-Type": "application/x-www-form-urlencoded", }, } ); cancelResults.push({ queueId: item.id, success: isSuccessStatus(cancelResponse.status) || cancelResponse.status === 204, statusCode: cancelResponse.status, why: item.why || "No reason provided", inQueueSince: item.inQueueSince, params: item.params, }); } catch (error) { cancelResults.push({ queueId: item.id, success: false, error: error.message, }); } } const successCount = cancelResults.filter((r) => r.success).length; const allSuccess = successCount === cancelResults.length; return allSuccess ? success("cancelQueuedBuild", { message: `Successfully cancelled ${successCount} queued build(s) for ${jobFullName}`, cancelledItems: cancelResults, totalCancelled: successCount, totalFound: jobQueueItems.length, }) : failure( "cancelQueuedBuild", `Cancelled ${successCount} out of ${cancelResults.length} queued build(s)`, { cancelledItems: cancelResults, totalCancelled: successCount, totalFound: jobQueueItems.length, } ); } catch (error) { return formatError(error, "cancel queued build"); } }
  • Tool registration in the central registry, including name, description, input schema (jobFullName required, queueId optional), and handler reference.
    cancelQueuedBuild: { name: "cancelQueuedBuild", description: "Cancel a pending/queued Jenkins build that hasn't started yet", inputSchema: { type: "object", properties: { jobFullName: { type: "string", description: "Full path of the Jenkins job", }, queueId: { type: "integer", description: "Specific queue item ID to cancel (optional, cancels all queued items for the job if not provided)", }, }, required: ["jobFullName"], }, handler: cancelQueuedBuild, },
  • Input schema defining parameters for the cancelQueuedBuild tool.
    inputSchema: { type: "object", properties: { jobFullName: { type: "string", description: "Full path of the Jenkins job", }, queueId: { type: "integer", description: "Specific queue item ID to cancel (optional, cancels all queued items for the job if not provided)", }, }, required: ["jobFullName"], },

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/umishra1504/Jenkins-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server