UNPKG

@gzteacher/workflow

Version:
181 lines (176 loc) 4.31 kB
/** workflow.config.js 配置 */ export interface WorkFlowConfig { /** * tag 相关配置。 */ tag?: Tag; /** * 企业微信消息通知相关配置,`undefined` 时关闭消息通知行为 * @default undefined */ notify?: Notify; } /** * tag 相关配置 * * 支持格式:{version}-{env}-{order} */ export interface Tag { /** * 配置获取 tag 格式 {version}-{env}-{order} 中 version 值的方法。 * * 默认取上一个标签中 version 的值。 * @default ({ preVersion }) => preVersion */ getVersion?: (ctx: Context) => string; /** * 配置获取 tag 格式 {version}-{env}-{order} 中 env 值的方法。 * * 默认取上一个标签中 env 的值。 * @default ({ preEnv }) => preEnv */ getEnv?: (ctx: Context) => string; /** * 配置获取 tag 格式 {version}-{env}-{order} 中 order 值的方法。 * * 默认取上一个标签中 order 的值加 1。 * @default ({ preOrder }) => `${Number(preOrder) + 1}` */ getOrder?: (ctx: Context) => string; /** * 配置获取 tagName 的方法。结果将替换原 {version}-{env}-{order} 格式的组装。 * * @default undefined */ getTagName?: (ctx: Context) => string; /** * 配置获取 commit 内容的方法。 * @default ({ tagName }) => `chore: release ${tagName}` */ getMsg?: (ctx: Context) => string; /** * 配置获取版本号文件名的方法,`false` 时关闭更新版本号文件的行为。 * @default "VERSION" */ getVersionFileName?: ((ctx: Context) => string) | false; /** * 配置获取第一个 tag 名的方法,将在仓库还没有 tag 记录时使用。 * * `undefined` 时不自动提交第一个 tag。 * @default undefined */ getFirstTagName?: (ctx: Context) => string; /** * 允许触发 tag 流程的分支名。 * * `undefined` 时不限制分支名。 * @default undefined */ allowBranchs?: string[]; } /** * 企业微信消息通知相关配置 * @see https://developer.work.weixin.qq.com/document/path/91770 */ export interface Notify { /** * 配置获取消息机器人 webhook 的方法。 * * 添加机器人方法: https://developer.work.weixin.qq.com/document/path/91770 * * `undefined` 时不发送消息。 * @default undefined */ getWebhookUrl?: (ctx: Context) => string; /** * 配置获取消息内容的方法。支持 md 格式。 * * `undefined` 时不发送消息。 * @see https://developer.work.weixin.qq.com/document/path/91770 * @default undefined */ getContent?: (ctx: Context) => string; /** * 允许触发消息通知流程的分支名。 * * `undefined` 时不限制分支名。 * @default undefined */ allowBranchs?: string[]; } /** * 流程上下文信息 * * 将在执行 getXXX 类方法时作为参数传入。 */ export interface Context { /** * 标签格式 {version}-{env}-{order} * * 获取上一个标签中的 `version` 部分内容。 */ preVersion: string; /** * 标签格式 {version}-{env}-{order} * * 获取上一个标签中的 `env` 部分内容。 */ preEnv: string; /** * 标签格式 {version}-{env}-{order} * * 获取上一个标签中的 `order` 部分内容。 */ preOrder: string; /** * 标签格式 {version}-{env}-{order} * * 获取上一个 tag 名。 */ preTagName: string; /** * 标签格式 {version}-{env}-{order} * * 获取新生成的 tag 名。 */ tagName: string; /** * 标签格式 {version}-{env}-{order} * * 获取新生成标签中的 `version` 部分内容。 */ version: string; /** * 标签格式 {version}-{env}-{order} * * 获取新生成标签中的 `env` 部分内容。 */ env: string; /** * 标签格式 {version}-{env}-{order} * * 获取新生成标签中的 `order` 部分内容。 */ order: string; /** * 获取当前 git 用户名 */ username: string; /** * 获取当前分支名 */ branchName: string; } /** * 执行命令可传参数 */ export interface Options { /** * 跳过消息通知的步骤 */ silence: boolean; /** * 不执行任何产生副作用的 git 操作,仅打印日志,可用于调试 */ debug: boolean; }