UNPKG

kef-cloudbuild-runner

Version:

runner for cloudbuild

51 lines (41 loc) 1.49 kB
'use strict'; 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; };