Skip to content

引入

ts
import {
  getImageName,
  parseGrayPublishConfig,
  getCurrentProjectUseGray
} from 't-comm';

// 不支持 tree-shaking 的项目
import {
  getImageName,
  parseGrayPublishConfig,
  getCurrentProjectUseGray
} from 't-comm/lib/gray-release/index';

// 只支持 ESM 的项目
import {
  getImageName,
  parseGrayPublishConfig,
  getCurrentProjectUseGray
} from 't-comm/es/gray-release/index';

getImageName(projectName, subProjectName, branch)

描述

获取镜像名称 根据项目名、子项目名和分支生成镜像名称

参数

参数名描述
projectName

项目名称

subProjectName

子项目名称

branch

分支名称

返回:

镜像名称

示例

ts
const imageName = getImageName({
  projectName: 'my-project',
  subProjectName: 'sub-project',
  branch: 'release'
});
// 'my-project.sub-project'

parseGrayPublishConfig(config)

描述

解析灰度发布配置 将嵌套的配置对象转换为平面的映射表

参数

参数名描述
config

原始配置对象

返回:

解析后的全局灰度发布配置

示例

ts
const config = {
  'project1': {
    'sub1': {
      'release': { grayVersion: '1.0.0', grayPercent: '50', cookieId: 'xxx' }
    }
  }
};
const parsed = parseGrayPublishConfig(config);
// { 'project1.sub1': { grayVersion: '1.0.0', ... } }

getCurrentProjectUseGray(fullSubProjectName, globalGrayPublishConfig)

描述

获取当前项目使用的灰度配置 根据子项目名称查找匹配的灰度发布配置

参数

参数名描述
fullSubProjectName

完整的子项目名称

globalGrayPublishConfig

全局灰度发布配置

返回:

匹配的灰度配置列表

示例

ts
const grayList = getCurrentProjectUseGray(
  'my-project.sub-project',
  globalGrayPublishConfig
);
// [
//   {
//     fullSubProjectName: 'my-project.sub-project',
//     packageName: 'my-project.sub-project.dev',
//     parsedBranch: '.dev',
//     cookieId: 'xxx'
//   }
// ]