long-git-cli
Version:
A CLI tool for Git tag management.
138 lines • 3.24 kB
TypeScript
/**
* 自动化部署功能的类型定义
*/
/**
* 部署配置
*/
export interface DeployConfig {
version: string;
projects: {
[projectPath: string]: ProjectConfig;
};
bitbucket: BitbucketConfig;
jenkins: JenkinsConfig[];
}
/**
* 项目配置
*/
export interface ProjectConfig {
name: string;
path: string;
repository: {
workspace: string;
repoSlug: string;
};
jenkinsInstance: "app" | "pcalpha";
tagFormat: string;
environments: {
[env: string]: EnvironmentConfig;
};
}
/**
* 环境配置
*/
export interface EnvironmentConfig {
/** 环境名称: 'test-01', 'test-02', 'test-03', 'test-04', 'uat' */
name: string;
/** Tag 格式: 'test-v00.00.0000', 'uat-v00.00.0000' */
tagFormat: string;
/** Jenkins Job 名称 */
jenkinsJobName: string;
/** Jenkins Tag 参数名 */
jenkinsTagParameter: string;
/** 部署状态(可选) */
deployStatus?: {
status: 'building' | 'deploying' | 'success' | 'failed';
tagName: string;
step: 'pipeline' | 'jenkins' | 'completed' | 'unknown';
startTime?: string;
completedTime?: string;
failedTime?: string;
jenkinsBuildNumber?: number;
jenkinsBuildUrl?: string;
error?: string;
lastUpdated?: string;
};
}
/**
* Bitbucket 配置
*/
export interface BitbucketConfig {
username: string;
/** @deprecated 使用 apiTokenHash 代替 (2026年6月9日前仍可用) */
appPasswordHash?: string;
/** 加密后的 API Token (推荐使用) */
apiTokenHash?: string;
}
/**
* Jenkins 配置
*/
export interface JenkinsConfig {
type: "app" | "pcalpha";
url: string;
username: string;
/** 加密后的 API Token */
apiTokenHash: string;
}
/**
* Pipeline 状态
*/
export interface PipelineStatus {
uuid: string;
state: {
name: "PENDING" | "IN_PROGRESS" | "SUCCESSFUL" | "FAILED" | "STOPPED";
result?: {
name: string;
};
};
created_on: string;
completed_on?: string;
target: {
/** tag 名称 */
ref_name: string;
};
}
/**
* 等待选项
*/
export interface WaitOptions {
/** 轮询间隔(毫秒),默认 15 秒 */
pollInterval?: number;
/** 超时时间(毫秒),默认 30 分钟 */
timeout?: number;
/** 进度回调 */
onProgress?: (status: PipelineStatus) => void;
}
/**
* Jenkins 构建信息
*/
export interface JenkinsBuildInfo {
number: number;
url: string;
result: "SUCCESS" | "FAILURE" | "ABORTED" | "UNSTABLE" | null;
building: boolean;
duration: number;
timestamp: number;
}
/**
* 部署选项
*/
export interface DeployOptions {
tag?: string;
environment?: string;
project?: string;
skipBuild?: boolean;
}
/**
* 错误代码枚举
*/
export declare enum ErrorCode {
CONFIG_MISSING = "CONFIG_MISSING",
CONFIG_INVALID = "CONFIG_INVALID",
AUTH_FAILED = "AUTH_FAILED",
PIPELINE_FAILED = "PIPELINE_FAILED",
PIPELINE_TIMEOUT = "PIPELINE_TIMEOUT",
DEPLOYMENT_FAILED = "DEPLOYMENT_FAILED",
NETWORK_ERROR = "NETWORK_ERROR"
}
//# sourceMappingURL=types.d.ts.map