UNPKG

kef-cloudbuild-runner

Version:

runner for cloudbuild

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