Skip to main content
Glama
yjiace

AlibabaCloud DevOps MCP Server

by yjiace
pipelineJob.ts4.9 kB
/** * 流水线任务相关操作 * 提供按照分类获取流水线执行的任务接口 */ import * as utils from "../../common/utils.js"; import { PipelineJobItemSchema, PipelineJobItem, PipelineJobHistoryItemSchema, PipelineJobHistoryItem, PipelineJobRunLogSchema, PipelineJobRunLog } from "./types.js"; /** * 按任务分类获取流水线执行的任务 * @param organizationId Organization ID(组织ID) * @param pipelineId Pipeline ID(流水线ID) * @param category Task category, currently only supports DEPLOY(任务分类,当前仅支持DEPLOY) * @returns 任务列表 */ export async function listPipelineJobsByCategoryFunc( organizationId: string, pipelineId: string, category: string ): Promise<PipelineJobItem[]> { const url = `/oapi/v1/flow/organizations/${organizationId}/pipelines/${pipelineId}/listTasksByCategory/${category}`; const response = await utils.yunxiaoRequest(url, { method: "GET", }); if (!Array.isArray(response)) { return []; } return response.map(job => PipelineJobItemSchema.parse(job)); } /** * 获取流水线任务的执行历史 * @param organizationId Organization ID(组织ID) * @param pipelineId Pipeline ID(流水线ID) * @param category Task category, currently only supports DEPLOY(任务分类,当前仅支持DEPLOY) * @param identifier Task identifier(任务标识) * @param page Page number, default 1 * @param perPage Number of items per page, default 10, max 30 * @returns Job history list and pagination information */ export async function listPipelineJobHistorysFunc( organizationId: string, pipelineId: string, category: string, identifier: string, page: number = 1, perPage: number = 10 ): Promise<{ items: PipelineJobHistoryItem[], pagination: { nextPage: number | null, page: number, perPage: number, prevPage: number | null, total: number, totalPages: number } }> { const baseUrl = `/oapi/v1/flow/organizations/${organizationId}/pipelines/getComponentsWithoutButtons`; const queryParams: Record<string, string | number> = { pipelineId, category, identifier, page, perPage }; const url = utils.buildUrl(baseUrl, queryParams); const response = await utils.yunxiaoRequest(url, { method: "GET", }); const pagination = { nextPage: null as number | null, page: page, perPage: perPage, prevPage: null as number | null, total: 0, totalPages: 0 }; if (response && 'headers' in (response as any)) { const headers = (response as any).headers; if (headers['x-next-page']) { pagination.nextPage = parseInt(headers['x-next-page']); } if (headers['x-page']) { pagination.page = parseInt(headers['x-page']); } if (headers['x-per-page']) { pagination.perPage = parseInt(headers['x-per-page']); } if (headers['x-prev-page']) { pagination.prevPage = parseInt(headers['x-prev-page']); } if (headers['x-total']) { pagination.total = parseInt(headers['x-total']); } if (headers['x-total-pages']) { pagination.totalPages = parseInt(headers['x-total-pages']); } } const items = Array.isArray(response) ? response.map(item => PipelineJobHistoryItemSchema.parse(item)) : []; return { items, pagination }; } /** * 手动运行流水线任务 * @param organizationId Organization ID(组织ID) * @param pipelineId Pipeline ID(流水线ID) * @param pipelineRunId Pipeline run instance ID(流水线运行ID) * @param jobId Job ID for the pipeline run task(流水线运行任务ID) * @returns Whether the operation was successful */ export async function executePipelineJobRunFunc( organizationId: string, pipelineId: string, pipelineRunId: string, jobId: string ): Promise<boolean> { const url = `/oapi/v1/flow/organizations/${organizationId}/pipelines/${pipelineId}/pipelineRuns/${pipelineRunId}/jobs/${jobId}/start`; const response = await utils.yunxiaoRequest(url, { method: "POST", }); return Boolean(response); } /** * 查询任务运行日志 * @param organizationId Organization ID(组织ID) * @param pipelineId Pipeline ID(流水线ID) * @param pipelineRunId Pipeline run instance ID(流水线运行ID) * @param jobId Job ID of the pipeline run task(流水线运行任务ID) * @returns Log content and metadata */ export async function getPipelineJobRunLogFunc( organizationId: string, pipelineId: string, pipelineRunId: string, jobId: string ): Promise<PipelineJobRunLog> { const url = `/oapi/v1/flow/organizations/${organizationId}/pipelines/${pipelineId}/runs/${pipelineRunId}/job/${jobId}/log`; const response = await utils.yunxiaoRequest(url, { method: "GET", }); return PipelineJobRunLogSchema.parse(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