Skip to content

引入

ts
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

分支名

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

仓库名

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

NameType
totalnumber
successnumber
conflictnumber
noMergenumber
skippednumber

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)

描述:每日合并

    - 获取昨天有活跃的分支 - 对于每个分支,进行合并并推送
  1. 清理 Git 环境 - 切到主分支,并拉最新代码 - 切到当前分支,拉最新代码 - 尝试执行 git merge - 对比 merge 前后的 commit 信息是否相同,作为判断 merge 是否成功的依据
  2. - 发送机器人消息

参数

参数名类型默认值描述
param0object参数
param0.webhookUrlstring机器人地址
param0.appNamestring项目名称
param0.devRootstring项目根路径
param0.baseUrlstring基础请求 url
[param0.docUrl]string说明文档链接
[param0.atUsers]string@ 提醒用户(英文逗号分隔,默认 novlan1)
param0.repoNamestring仓库名称
param0.privateTokenstring密钥
[param0.isDryRun]booleanfalse是否演练
[param0.mainBranch]string"'develop'"主分支
[param0.whiteBranchReg]Regexp/^release|develop|hotfix\\/.+$/不处理的分支正则
[param0.onReport]function执行完成后的结构化结果回调(可用于上报到自建后台)

示例

ts
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

描述:每个分支的处理状态

参数