Skip to main content
Glama

updateBuild

Modify Jenkins build metadata by updating display names and descriptions for specific jobs and build numbers.

Instructions

Update build display name and/or description

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
jobFullNameYesFull path of the Jenkins job
buildNumberNoBuild number (optional, defaults to last build)
displayNameNoNew display name for the build
descriptionNoNew description for the build

Implementation Reference

  • The core handler function implementing the updateBuild tool logic. It updates the build description via Jenkins REST API (displayName not supported) and returns success/failure with details.
    export async function updateBuild(client, args) { const { jobFullName, buildNumber = null, displayName = null, description = null, } = args; const jobPath = encodeJobPath(jobFullName); const buildPath = buildNumber || "lastBuild"; try { const buildInfo = await client.get( `${client.baseUrl}/job/${jobPath}/${buildPath}/api/json?tree=number,url,description` ); if (buildInfo.status !== 200) { return failure( "updateBuild", `Build not found: ${jobFullName}#${buildPath}`, { statusCode: buildInfo.status } ); } const actualBuildNumber = buildInfo.data.number; const buildUrl = buildInfo.data.url; const updates = []; // Update description if (description !== null && description !== undefined) { try { const formData = new URLSearchParams(); formData.append("description", description); const response = await client.post( `${client.baseUrl}/job/${jobPath}/${actualBuildNumber}/submitDescription`, formData.toString(), { headers: { "Content-Type": "application/x-www-form-urlencoded", }, } ); if (isSuccessStatus(response.status)) { updates.push({ field: "description", success: true, newValue: description, statusCode: response.status, }); } else { updates.push({ field: "description", success: false, error: `Failed with status ${response.status}`, }); } } catch (error) { updates.push({ field: "description", success: false, error: error.message, }); } } // Display name - not available via REST API if (displayName !== null && displayName !== undefined) { updates.push({ field: "displayName", success: false, error: "Not supported via REST API", workaround: "Use Jenkins Script Console with Groovy script", }); } return updates.some((u) => u.success) ? success("updateBuild", { buildNumber: actualBuildNumber, buildUrl, updates, }) : failure("updateBuild", "No updates applied", { buildNumber: actualBuildNumber, buildUrl, updates, }); } catch (error) { return formatError(error, "updateBuild"); } }
  • Tool registration in the central toolRegistry, including name, description, input schema (JSON Schema), and reference to the handler function.
    updateBuild: { name: "updateBuild", description: "Update build display name and/or description", inputSchema: { type: "object", properties: { jobFullName: { type: "string", description: "Full path of the Jenkins job", }, buildNumber: { type: "integer", description: "Build number (optional, defaults to last build)", }, displayName: { type: "string", description: "New display name for the build", }, description: { type: "string", description: "New description for the build", }, }, required: ["jobFullName"], }, handler: updateBuild, },
  • JSON Schema defining the input parameters for the updateBuild tool.
    inputSchema: { type: "object", properties: { jobFullName: { type: "string", description: "Full path of the Jenkins job", }, buildNumber: { type: "integer", description: "Build number (optional, defaults to last build)", }, displayName: { type: "string", description: "New display name for the build", }, description: { type: "string", description: "New description for the build", }, }, 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