t-comm
Version:
专业、稳定、纯粹的工具库
248 lines (243 loc) • 9.51 kB
JavaScript
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var tslib_es6 = require('../../tslib.es6-01322ba9.js');
var node_fsUtil = require('../../node/fs-util.js');
var rainbow_rainbowAdmin = require('../../rainbow/rainbow-admin.js');
var devops_pipeline = require('../pipeline.js');
var devops_template = require('../template.js');
var devops_mpCi_config = require('./config.js');
var devops_mpCi_helper = require('./helper.js');
require('fs');
require('path');
require('../../fs/fs.js');
require('../../time/time.js');
require('../../rainbow/helper/helper.js');
require('../../rainbow/helper/rainbow-base-request.js');
require('axios');
require('../../rainbow/helper/rainbow-signature.js');
require('../token.js');
require('../../object/compare.js');
require('../../object/equal.js');
var CI_PREFIX_MAP = devops_mpCi_config.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 tslib_es6.__awaiter(this, void 0, void 0, function () {
var newConfig, robotMapKey, newInfo, robotMap, _i, _c, robot, _d, branch, env, pipelineName, alreadyPipeline, cgiName, extraParam;
return tslib_es6.__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 = devops_mpCi_helper.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 = devops_mpCi_helper.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*/, devops_mpCi_helper.isPipelineUpdated({
pipelineName: pipelineName,
isWxCI: isWxCI,
forceUpdate: forceUpdate,
devopsConfig: devopsConfig,
templateIdMap: templateIdMap
})];
case 2:
alreadyPipeline = _e.sent();
console.log('[alreadyPipeline]', alreadyPipeline);
cgiName = devops_template.createDevopsTemplateInstances;
extraParam = {};
if (alreadyPipeline.type === 'CREATE') ; else if (alreadyPipeline.type === 'UPDATE') {
cgiName = devops_template.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 tslib_es6.__awaiter(this, void 0, void 0, function () {
var res, pipelineId;
return tslib_es6.__generator(this, function (_d) {
switch (_d.label) {
case 0:
return [4 /*yield*/, cgiName(tslib_es6.__assign(tslib_es6.__assign(tslib_es6.__assign(tslib_es6.__assign({}, devopsConfig), {
templateId: isWxCI ? templateIdMap.WX_MP_CI : templateIdMap.QQ_MP_CI
}), extraParam), {
pipelineName: pipelineName,
pipelineParam: tslib_es6.__spreadArray([], devops_mpCi_helper.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*/, devops_pipeline.startDevopsPipeline(tslib_es6.__assign(tslib_es6.__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 tslib_es6.__awaiter(this, void 0, void 0, function () {
var added, updated, deleted, rainbowMap, filterMpCI, updatedMpCIs;
return tslib_es6.__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 = tslib_es6.__spreadArray(tslib_es6.__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 tslib_es6.__awaiter(this, void 0, void 0, function () {
var resp, rainbowMap, compareRes, updatedMpCIs, _i, updatedMpCIs_1, mpCIKey, unusedPipeline;
return tslib_es6.__generator(this, function (_e) {
switch (_e.label) {
case 0:
return [4 /*yield*/, rainbow_rainbowAdmin.queryGroupInfo({
secretInfo: rainbowGroupSecretInfo
})];
case 1:
resp = _e.sent();
rainbowMap = devops_mpCi_helper.genOneFileFromRainbowGroup(resp);
compareRes = devops_mpCi_helper.compareFromLogFile(devops_mpCi_helper.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 = devops_mpCi_helper.getUnusedPipelineList({
isWxCI: isWxCI,
templateIdMap: templateIdMap,
usefulList: usefulPipelineIdList
});
node_fsUtil.saveJsonToLog(rainbowMap, devops_mpCi_helper.getRainbowMpCIFileName(isWxCI));
node_fsUtil.saveJsonToLog({
unusedPipeline: unusedPipeline
}, "devops-unused-pipeline-".concat(isWxCI ? 'wx' : 'qq', ".json"));
return [2 /*return*/];
}
});
});
}
exports.updateDevopsMpCIPipeline = updateDevopsMpCIPipeline;