kef-cloudbuild-runner
Version:
runner for cloudbuild
51 lines (41 loc) • 1.49 kB
JavaScript
;
const path = require('path');
const fs = require('fs-extra');
const s_log = require('./log');
const s_archive = require('./archive');
const co = require('co');
const oss = require('ali-oss');
const kMaxMap = 50;
exports.run = function* (options, dest) {
if (!options.buildMap) {
return;
};
const mapDir = path.join(options.projectDir, options.buildMap);
const oss_client = oss(options.ossConf);
// 查看是否有 process.env.BUILD_MAP 文件夹
const stat = yield fs.stat(mapDir).catch(e => e);
if ((stat instanceof Error) || !stat.isDirectory()) return;
s_log.info('正在备份 Source Map');
const oss_prefix = `cloudbuild/runner/result-map/${dest.md5}_${Date.now()}_${parseInt(Math.random() * 100000)}/`;
const files = yield s_archive.getPackFiles({
where: mapDir,
patterns: "**/*.map"
});
if (files.length > kMaxMap) {
s_log.info(`Source Map 文件数目超过 ${kMaxMap}, 暂不支持备份`);
} else {
// 上传 map 文件
for (let file of files) {
s_log.info(`正在上传 map 文件:${file}`);
const o_path = path.join(oss_prefix, file);
const d_path = path.join(mapDir, file);
yield co(function* () {
yield oss_client.putStream(o_path, fs.createReadStream(d_path))
}).catch(e => {
s_log.info('上传 source map 出错,该错误不影响构建结果,错误详情:' + e.message);
});
};
}
s_log.info('done Source Map');
return oss_prefix;
};