Skip to main content
Glama
yjiace

AlibabaCloud DevOps MCP Server

by yjiace
commits.ts5.41 kB
import { z } from "zod"; import { yunxiaoRequest, buildUrl, handleRepositoryIdEncoding } from "../../common/utils.js"; import { DevopsCommitVOSchema as DevopsCommitVOSchemaType } from "./types.js"; // Commit schemas export const ListCommitsRequestSchema = z.object({ organizationId: z.string().describe("组织ID"), repositoryId: z.string().describe("代码库ID或者URL-Encoder编码的全路径"), refName: z.string().describe("分支名称、标签名称或提交版本,默认为代码库默认分支"), since: z.string().optional().describe("提交起始时间,格式:YYYY-MM-DDTHH:MM:SSZ"), until: z.string().optional().describe("提交截止时间,格式:YYYY-MM-DDTHH:MM:SSZ"), page: z.number().int().optional().describe("页码"), perPage: z.number().int().optional().describe("每页大小"), path: z.string().optional().describe("文件路径"), search: z.string().optional().describe("搜索关键字"), showSignature: z.boolean().optional().describe("是否展示签名"), committerIds: z.string().optional().describe("提交人ID列表(多个ID以逗号隔开)"), }); export const GetCommitRequestSchema = z.object({ organizationId: z.string().describe("组织ID"), repositoryId: z.string().describe("代码库ID或者URL-Encoder编码的全路径"), sha: z.string().describe("提交ID,即Commit SHA值"), }); export const CreateCommitCommentRequestSchema = z.object({ organizationId: z.string().describe("组织ID"), repositoryId: z.string().describe("代码库ID或者URL-Encoder编码的全路径"), sha: z.string().describe("提交的SHA值"), content: z.string().describe("commit的评论内容"), }); // Response schemas export const DevopsCommitVOSchema = z.object({ id: z.string().nullable().optional().describe("提交ID"), shortId: z.string().nullable().optional().describe("代码组路径"), title: z.string().nullable().optional().describe("标题,提交的第一行内容"), message: z.string().nullable().optional().describe("提交内容"), authorName: z.string().nullable().optional().describe("作者姓名"), authorEmail: z.string().nullable().optional().describe("作者邮箱"), authoredDate: z.string().nullable().optional().describe("作者提交时间"), committerName: z.string().nullable().optional().describe("提交者姓名"), committerEmail: z.string().nullable().optional().describe("提交者邮箱"), committedDate: z.string().nullable().optional().describe("提交者提交时间"), webUrl: z.string().nullable().optional().describe("页面访问地址"), parentIds: z.array(z.string()).nullable().optional().describe("父提交ID"), }); export const DevopsCommitStatVOSchema = z.object({ additions: z.number().int().nullable().optional().describe("增加行数"), deletions: z.number().int().nullable().optional().describe("删除行数"), total: z.number().int().nullable().optional().describe("总变动行数"), }); export const CreateCommitCommentVOSchema = z.object({ content: z.string().describe("commit的评论内容"), }); // API functions export async function listCommits(params: z.infer<typeof ListCommitsRequestSchema>) { const { organizationId, repositoryId, refName, since, until, page, perPage, path, search, showSignature, committerIds } = params; const encodedRepoId = handleRepositoryIdEncoding(repositoryId); const baseUrl = `/oapi/v1/codeup/organizations/${organizationId}/repositories/${encodedRepoId}/commits`; const queryParams: Record<string, string | number | undefined> = { refName: refName }; if (since !== undefined) { queryParams.since = since; } if (until !== undefined) { queryParams.until = until; } if (page !== undefined) { queryParams.page = page; } if (perPage !== undefined) { queryParams.perPage = perPage; } if (path !== undefined) { queryParams.path = path; } if (search !== undefined) { queryParams.search = search; } if (showSignature !== undefined) { queryParams.showSignature = String(showSignature); } if (committerIds !== undefined) { queryParams.committerIds = committerIds; } const url = buildUrl(baseUrl, queryParams); const response: any = await yunxiaoRequest(url, { method: "GET", }); if (!Array.isArray(response)) { return []; } return response.map(commit => DevopsCommitVOSchemaType.parse(commit)); } export async function getCommit(params: z.infer<typeof GetCommitRequestSchema>) { const { organizationId, repositoryId, sha } = params; const encodedRepoId = handleRepositoryIdEncoding(repositoryId); const url = `/oapi/v1/codeup/organizations/${organizationId}/repositories/${encodedRepoId}/commits/${sha}`; const response: any = await yunxiaoRequest(url, { method: "GET", }); return DevopsCommitVOSchemaType.parse(response); } export async function createCommitComment(params: z.infer<typeof CreateCommitCommentRequestSchema>) { const { organizationId, repositoryId, sha, content } = params; const encodedRepoId = handleRepositoryIdEncoding(repositoryId); const url = `/oapi/v1/codeup/organizations/${organizationId}/repositories/${encodedRepoId}/commits/${sha}/comments`; const response: any = await yunxiaoRequest(url, { method: "POST", body: { content } }); return response; }

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/yjiace/alibabacloud-devops-mcp-server'

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