UNPKG

t-comm

Version:

专业、稳定、纯粹的工具库

244 lines (241 loc) 9.2 kB
import { b as __awaiter, c as __generator, _ as __assign, a as __spreadArray } from '../../tslib.es6-096fffdd.js'; import { saveJsonToLog } from '../../node/fs-util.mjs'; import { queryGroupInfo } from '../../rainbow/rainbow-admin.mjs'; import { startDevopsPipeline } from '../pipeline.mjs'; import { createDevopsTemplateInstances, updateDevopsTemplateInstances } from '../template.mjs'; import { DEVOPS_MP_CI_CONFIG } from './config.mjs'; import { getUnusedPipelineList, getRainbowMpCIFileName, genOneFileFromRainbowGroup, compareFromLogFile, getPipelineName, isPipelineUpdated, parseRobotMap, getPipelineParam } from './helper.mjs'; import 'fs'; import 'path'; import '../../fs/fs.mjs'; import '../../time/time.mjs'; import '../../rainbow/helper/helper.mjs'; import '../../rainbow/helper/rainbow-base-request.mjs'; import 'axios'; import '../../rainbow/helper/rainbow-signature.mjs'; import '../token.mjs'; import '../../object/compare.mjs'; import '../../object/equal.mjs'; var CI_PREFIX_MAP = DEVOPS_MP_CI_CONFIG.CI_PREFIX_MAP; var usefulPipelineIdList = []; function updateOrCreateInstance(_a) { var _b; var rainbowMap = _a.rainbowMap, mpCIKey = _a.mpCIKey, isWxCI = _a.isWxCI, forceUpdate = _a.forceUpdate, devopsConfig = _a.devopsConfig, templateIdMap = _a.templateIdMap, onlyCollectNoUsedPipeline = _a.onlyCollectNoUsedPipeline; return __awaiter(this, void 0, void 0, function () { var newConfig, robotMapKey, newInfo, robotMap, _i, _c, robot, _d, branch, env, pipelineName, alreadyPipeline, cgiName, extraParam; return __generator(this, function (_e) { switch (_e.label) { case 0: newConfig = {}; try { newConfig = JSON.parse(rainbowMap[mpCIKey].value); } catch (_f) {} robotMapKey = isWxCI ? 'robotMap' : 'qqRobotMap'; newInfo = newConfig[robotMapKey] || {}; robotMap = parseRobotMap(newInfo); _i = 0, _c = Object.keys(robotMap); _e.label = 1; case 1: if (!(_i < _c.length)) return [3 /*break*/, 5]; robot = _c[_i]; _d = robotMap[robot], branch = _d.branch, env = _d.env; pipelineName = getPipelineName({ robot: robot, env: env, branch: branch, ciKey: (_b = newConfig.ci) === null || _b === void 0 ? void 0 : _b.name, prefix: isWxCI ? CI_PREFIX_MAP.wx : CI_PREFIX_MAP.qq }); console.log('[pipelineName]', pipelineName); return [4 /*yield*/, isPipelineUpdated({ pipelineName: pipelineName, isWxCI: isWxCI, forceUpdate: forceUpdate, devopsConfig: devopsConfig, templateIdMap: templateIdMap })]; case 2: alreadyPipeline = _e.sent(); console.log('[alreadyPipeline]', alreadyPipeline); cgiName = createDevopsTemplateInstances; extraParam = {}; if (alreadyPipeline.type === 'CREATE') ; else if (alreadyPipeline.type === 'UPDATE') { cgiName = updateDevopsTemplateInstances; extraParam.pipelineId = alreadyPipeline.pipelineId; } else { return [3 /*break*/, 4]; } if (extraParam.pipelineId) { usefulPipelineIdList.push(extraParam.pipelineId); } if (!!onlyCollectNoUsedPipeline) return [3 /*break*/, 4]; return [4 /*yield*/, realUpdateOrCreatePipeline({ cgiName: cgiName, devopsConfig: devopsConfig, isWxCI: isWxCI, templateIdMap: templateIdMap, extraParam: extraParam, pipelineName: pipelineName, branch: branch, env: env, mpCIKey: mpCIKey, newConfig: newConfig, forceUpdate: forceUpdate })]; case 3: _e.sent(); _e.label = 4; case 4: _i++; return [3 /*break*/, 1]; case 5: return [2 /*return*/]; } }); }); } function realUpdateOrCreatePipeline(_a) { var _b, _c; var cgiName = _a.cgiName, devopsConfig = _a.devopsConfig, isWxCI = _a.isWxCI, templateIdMap = _a.templateIdMap, extraParam = _a.extraParam, pipelineName = _a.pipelineName, branch = _a.branch, env = _a.env, mpCIKey = _a.mpCIKey, newConfig = _a.newConfig, forceUpdate = _a.forceUpdate; return __awaiter(this, void 0, void 0, function () { var res, pipelineId; return __generator(this, function (_d) { switch (_d.label) { case 0: return [4 /*yield*/, cgiName(__assign(__assign(__assign(__assign({}, devopsConfig), { templateId: isWxCI ? templateIdMap.WX_MP_CI : templateIdMap.QQ_MP_CI }), extraParam), { pipelineName: pipelineName, pipelineParam: __spreadArray([], getPipelineParam({ branch: branch, env: env, rainbowConfigKey: mpCIKey, repo: newConfig.ci.repo, isWxCI: isWxCI, devopsParams: newConfig.devopsParams || {} }), true) }))["catch"](function (err) { console.log('[cgiName] err', err); })]; case 1: res = _d.sent(); console.log('[cgiName] res', res); pipelineId = extraParam.pipelineId || ((_c = (_b = res === null || res === void 0 ? void 0 : res.data) === null || _b === void 0 ? void 0 : _b.successPipelinesId) === null || _c === void 0 ? void 0 : _c[0]); if (!(!forceUpdate && pipelineId)) return [3 /*break*/, 3]; return [4 /*yield*/, startDevopsPipeline(__assign(__assign({}, devopsConfig), { pipelineId: pipelineId, data: {} }))]; case 2: _d.sent(); _d.label = 3; case 3: return [2 /*return*/]; } }); }); } function handleChangedConfig(_a) { var _b = _a.compareRes, compareRes = _b === void 0 ? {} : _b, forceUpdate = _a.forceUpdate; return __awaiter(this, void 0, void 0, function () { var added, updated, deleted, rainbowMap, filterMpCI, updatedMpCIs; return __generator(this, function (_c) { added = compareRes.ADDED, updated = compareRes.UPDATED, deleted = compareRes.DELETED, rainbowMap = compareRes.newObj; filterMpCI = function filterMpCI(list) { return list.filter(function (item) { return item.endsWith('_mp_ci'); }); }; console.log('[compareRes]', added, updated, deleted); updatedMpCIs = []; if (forceUpdate) { updatedMpCIs = filterMpCI(Object.keys(rainbowMap)); } else { updatedMpCIs = __spreadArray(__spreadArray([], filterMpCI(added), true), filterMpCI(updated), true); } return [2 /*return*/, updatedMpCIs]; }); }); } function updateDevopsMpCIPipeline(_a) { var _b = _a.isWxCI, isWxCI = _b === void 0 ? true : _b, _c = _a.forceUpdate, forceUpdate = _c === void 0 ? false : _c, _d = _a.onlyCollectNoUsedPipeline, onlyCollectNoUsedPipeline = _d === void 0 ? false : _d, devopsConfig = _a.devopsConfig, templateIdMap = _a.templateIdMap, rainbowGroupSecretInfo = _a.rainbowGroupSecretInfo; return __awaiter(this, void 0, void 0, function () { var resp, rainbowMap, compareRes, updatedMpCIs, _i, updatedMpCIs_1, mpCIKey, unusedPipeline; return __generator(this, function (_e) { switch (_e.label) { case 0: return [4 /*yield*/, queryGroupInfo({ secretInfo: rainbowGroupSecretInfo })]; case 1: resp = _e.sent(); rainbowMap = genOneFileFromRainbowGroup(resp); compareRes = compareFromLogFile(getRainbowMpCIFileName(isWxCI), rainbowMap); return [4 /*yield*/, handleChangedConfig({ compareRes: compareRes, forceUpdate: forceUpdate })]; case 2: updatedMpCIs = _e.sent(); _i = 0, updatedMpCIs_1 = updatedMpCIs; _e.label = 3; case 3: if (!(_i < updatedMpCIs_1.length)) return [3 /*break*/, 6]; mpCIKey = updatedMpCIs_1[_i]; return [4 /*yield*/, updateOrCreateInstance({ rainbowMap: rainbowMap, mpCIKey: mpCIKey, isWxCI: isWxCI, forceUpdate: forceUpdate, devopsConfig: devopsConfig, templateIdMap: templateIdMap, onlyCollectNoUsedPipeline: onlyCollectNoUsedPipeline })]; case 4: _e.sent(); _e.label = 5; case 5: _i++; return [3 /*break*/, 3]; case 6: unusedPipeline = getUnusedPipelineList({ isWxCI: isWxCI, templateIdMap: templateIdMap, usefulList: usefulPipelineIdList }); saveJsonToLog(rainbowMap, getRainbowMpCIFileName(isWxCI)); saveJsonToLog({ unusedPipeline: unusedPipeline }, "devops-unused-pipeline-".concat(isWxCI ? 'wx' : 'qq', ".json")); return [2 /*return*/]; } }); }); } export { updateDevopsMpCIPipeline };