import { ICustomBuildEnv, ICustomBuildSecret, ICustomBuildStep, CloudAppArtifact, CloudAppBuildStep } from '../../../cloudApp/types'; import { INormalizedHttpCloudConfig } from '../../types'; import { IEnterpriseTcrCredential } from '../enterprise-tcr'; export interface ICloudBuildResult { imageUri: string; imageDigest?: string; buildId?: string; versionName?: string; logsUrl?: string; } /** COS 上传信息(对应 DescribeCloudAppCosInfo 响应的必要字段) */ export interface ICloudCosInfo { uploadUrl: string; uploadHeaders: Array<{ key: string; value: string; }>; unixTimestamp: string; } /** 创建 custom 构建入参(不含 envId/deployType/buildType,由 service 补齐固定值) */ export interface ICloudCreateBuildInput { serviceName: string; cosTimestamp: string; env: ICustomBuildEnv[]; secrets?: ICustomBuildSecret[]; customSteps: ICustomBuildStep[]; } /** 创建 custom 构建结果 */ export interface ICloudCreateBuildResult { buildId?: string; versionName: string; /** CreateCloudApp 接口返回的 RequestId,便于把构建问题反馈给平台后端定位 */ requestId?: string; } /** 构建版本状态(对应 DescribeCloudAppVersion 响应必要字段) */ export interface ICloudVersionStatus { status: string; steps?: CloudAppBuildStep[] | null; artifacts?: CloudAppArtifact[] | null; /** DescribeCloudAppVersion 接口返回的 RequestId,便于把构建问题反馈给平台后端定位 */ requestId?: string; } /** * 云端构建所需的外部能力,由编排器注入 *每个方法对应构建方案(https://iwiki.woa.com/p/4020519533)的一个 API/IO 步骤 */ export interface ICloudBuildService { /** 打包构建上下文为 ZIP,返回本地临时 zip 路径 */ packContext: (cwd: string) => Promise; /** 获取 COS 上传凭证(DescribeCloudAppCosInfo,DeployType:custom) */ getCosInfo: (serviceName: string) => Promise; /** PUT 上传 zip 到 COS,必须携带全部 uploadHeaders */ uploadZip: (cosInfo: ICloudCosInfo, zipPath: string) => Promise; /** 触发 custom 构建(CreateCloudApp,DeployType:custom) */ createBuild: (input: ICloudCreateBuildInput) => Promise; /** 查询构建版本状态(DescribeCloudAppVersion) */ getVersionStatus: (serviceName: string, versionName: string) => Promise; /** 清理本地临时 zip;失败不应影响主流程 */ cleanup: (zipPath: string) => Promise; /** 延时(便于测试注入立即返回) */ delay: (ms: number) => Promise; } /** buildImageOnCloud 可选项 */ export interface IBuildImageOnCloudOptions { /** 日志回调,用于透出构建进度(不含凭证) */ onLog?: (line: string) => void; /** 企业版 TCR 临时登录凭证,由 manager-node 在 CreateCloudApp 前换取 */ enterpriseCredential?: IEnterpriseTcrCredential; } /** * 执行云端构建并推送镜像 * * @param config 规范化的 cloud 部署配置 * @param service 注入的外部能力(打包/tcb API/COS 上传) * @param options 可选项:日志回调 onLog、企业版临时登录凭证 */ export declare function buildImageOnCloud(config: INormalizedHttpCloudConfig, service: ICloudBuildService, options?: IBuildImageOnCloudOptions): Promise;