引入
import {
DailyMergeBranchResult,
DailyMergeReportInfo,
DailyMergeReportError,
dailyMerge,
DailyMergeBranchStatus
} from 't-comm';
// 不支持 tree-shaking 的项目
import {
DailyMergeBranchResult,
DailyMergeReportInfo,
DailyMergeReportError,
dailyMerge,
DailyMergeBranchStatus
} from 't-comm/lib/daily-merge/index';
// 只支持 ESM 的项目
import {
DailyMergeBranchResult,
DailyMergeReportInfo,
DailyMergeReportError,
dailyMerge,
DailyMergeBranchStatus
} from 't-comm/es/daily-merge/index';DailyMergeBranchResult
描述:每个分支的处理结果
参数:
DailyMergeBranchResult.name:string.status:DailyMergeBranchStatus.author:string.reason:string.originCommit:string.nowCommit:string
dailyMergeBranchResult.name : string
分支名
Kind: instance property of DailyMergeBranchResult
dailyMergeBranchResult.status : DailyMergeBranchStatus
处理状态
Kind: instance property of DailyMergeBranchResult
dailyMergeBranchResult.author : string
分支作者(如能从 commit 信息中拿到)
Kind: instance property of DailyMergeBranchResult
Optional:
dailyMergeBranchResult.reason : string
失败/跳过原因
Kind: instance property of DailyMergeBranchResult
Optional:
dailyMergeBranchResult.originCommit : string
merge 前 commit hash
Kind: instance property of DailyMergeBranchResult
Optional:
dailyMergeBranchResult.nowCommit : string
merge 后 commit hash
Kind: instance property of DailyMergeBranchResult
Optional:
DailyMergeReportInfo
描述:dailyMerge 整体执行结果(通过 onReport 回调传递)
参数:
DailyMergeReportInfo.repoName:string.appName:string.repoUrl:string.projectId:string|number.mainBranch:string.isDryRun:boolean.startTime:number.endTime:number.duration:number.branches:Array.summary:object.status:'success'|'partial'|'failed'|'empty'.robotMessage:string.robotNotified:boolean
dailyMergeReportInfo.repoName : string
仓库名
Kind: instance property of DailyMergeReportInfo
dailyMergeReportInfo.appName : string
应用名
Kind: instance property of DailyMergeReportInfo
dailyMergeReportInfo.repoUrl : string
仓库工蜂链接
Kind: instance property of DailyMergeReportInfo
Optional:
dailyMergeReportInfo.projectId : string | number
仓库 ID
Kind: instance property of DailyMergeReportInfo
Optional:
dailyMergeReportInfo.mainBranch : string
主分支
Kind: instance property of DailyMergeReportInfo
dailyMergeReportInfo.isDryRun : boolean
是否演练
Kind: instance property of DailyMergeReportInfo
dailyMergeReportInfo.startTime : number
启动时间(ms)
Kind: instance property of DailyMergeReportInfo
dailyMergeReportInfo.endTime : number
结束时间(ms)
Kind: instance property of DailyMergeReportInfo
dailyMergeReportInfo.duration : number
耗时(ms)
Kind: instance property of DailyMergeReportInfo
dailyMergeReportInfo.branches : Array
各分支处理结果
Kind: instance property of DailyMergeReportInfo
dailyMergeReportInfo.summary : object
汇总数
Kind: instance property of DailyMergeReportInfo
Properties
| Name | Type |
|---|---|
| total | number |
| success | number |
| conflict | number |
| noMerge | number |
| skipped | number |
dailyMergeReportInfo.status : 'success' | 'partial' | 'failed' | 'empty'
整体状态:success(全成功) / partial(部分失败) / failed(全失败) / empty(无分支)
Kind: instance property of DailyMergeReportInfo
dailyMergeReportInfo.robotMessage : string
机器人通知内容(markdown)
Kind: instance property of DailyMergeReportInfo
Optional:
dailyMergeReportInfo.robotNotified : boolean
机器人通知是否成功
Kind: instance property of DailyMergeReportInfo
Optional:
DailyMergeReportError
描述:dailyMerge 执行过程中发生的不可恢复错误
参数:
dailyMergeReportError.message : string
错误信息
Kind: instance property of DailyMergeReportError
dailyMergeReportError.stack : string
错误堆栈
Kind: instance property of DailyMergeReportError
Optional:
dailyMerge(param0)
描述:每日合并
- - 获取昨天有活跃的分支 - 对于每个分支,进行合并并推送
- 清理 Git 环境 - 切到主分支,并拉最新代码 - 切到当前分支,拉最新代码 - 尝试执行 git merge - 对比 merge 前后的 commit 信息是否相同,作为判断 merge 是否成功的依据 - 发送机器人消息
参数:
| 参数名 | 类型 | 默认值 | 描述 |
|---|---|---|---|
| param0 | object | 参数 | |
| param0.webhookUrl | string | 机器人地址 | |
| param0.appName | string | 项目名称 | |
| param0.devRoot | string | 项目根路径 | |
| param0.baseUrl | string | 基础请求 url | |
| [param0.docUrl] | string | 说明文档链接 | |
| [param0.atUsers] | string | @ 提醒用户(英文逗号分隔,默认 novlan1) | |
| param0.repoName | string | 仓库名称 | |
| param0.privateToken | string | 密钥 | |
| [param0.isDryRun] | boolean | false | 是否演练 |
| [param0.mainBranch] | string | "'develop'" | 主分支 |
| [param0.whiteBranchReg] | Regexp | /^release|develop|hotfix\\/.+$/ | 不处理的分支正则 |
| [param0.onReport] | function | 执行完成后的结构化结果回调(可用于上报到自建后台) |
示例
dailyMerge({
webhookUrl: 'xx',
appName: 'xx',
devRoot: 'xx',
baseUrl: 'xx',
repoName: 'xx',
privateToken: 'xx',
isDryRun: false,
onReport: async (info) => { await axios.post('/api/daily-merge', info); },
})dailyMerge~buildInfo()
构造最终上报的 info 对象
Kind: inner method of dailyMerge
dailyMerge~safeReport()
调用 onReport,吞掉错误避免影响主流程
Kind: inner method of dailyMerge
DailyMergeBranchStatus
描述:每个分支的处理状态
参数: