kef-cloudbuild-runner
Version:
runner for cloudbuild
41 lines (34 loc) • 1.59 kB
JavaScript
;
const debug = require('debug')('cloudbuild-runner');
const co = require('co');
const s_log = require('./log');
const s_source = require('./source');
const s_build = require('./build');
const s_env = require('./env');
const s_archive = require('./archive');
const s_upload = require('./upload');
const s_prepare = require('./prepare');
const s_map = require('./map');
const s_result = require('./result');
exports.run = function (options) {
debug('start build is %o', options);
return co(function* () {
yield s_prepare.prepare(options); //准备工作:参数检查, oss 配置获取等
yield s_source.getProjectDir(options); // 获取当前压缩包: 可以直接传入源码目录路径(目前用于 def build -l), 也可以传入压缩包地址,这里负责解压缩
const cmds = yield s_build.getCommand(options); // 获取构建命令
const env = yield s_env.get(options); // 获取环境变量
debug('cmds is %o', cmds);
yield s_build.run(options.projectDir, cmds, env); // 运行构建
// upload 云构建
if (options.upload) {
const dest = yield s_archive.run(options); // 打包结果
const dest_oss = yield s_upload.run(options, dest); // 上传结果到 oss,并记录 oss 地址到配置文件中
const map_oss = yield s_map.run(options, dest); // 添加 source map 文件,并上传
yield s_result.run(options, dest_oss, map_oss); // 将结果写入文件,方便外部容器读取
};
}).catch(e => {
s_log.error(e.message);
debug(e.stack);
return Promise.reject(e);
})
};