t-comm
Version:
专业、稳定、纯粹的工具库
244 lines (241 loc) • 9.2 kB
JavaScript
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 };