UNPKG

kef-cloudbuild-runner

Version:

runner for cloudbuild

54 lines (46 loc) 1.24 kB
'use strict'; const path = require('path'); const s_log = require('./log'); const oss = require('ali-oss'); const co = require('co'); const fs = require('fs-extra'); exports.run = function* (options, dest) { s_log.info('正在上传构建结果'); const oss_client = oss(options.ossConf); let oss_result, trytime = 2; while (1) { trytime--; oss_result = yield upload(oss_client, dest); if (oss_result instanceof Error) { s_log.error(`上传构建结果到 OSS 出错`); s_log.error(oss_result); if (trytime > 0) { s_log.info(`3s 后重试`); yield wait(3); } else { process.exit(16); } } else { break; } }; return { url: oss_result.url, md5: dest.md5 }; }; function* upload(oss_client, dest) { let oss_result = yield co(function* () { const oss_prefix = `cloudbuild/runner/result/${dest.md5}_${Date.now()}_${parseInt(Math.random() * 100000)}.tar.gz`; let result = yield oss_client.putStream(oss_prefix, fs.createReadStream(dest.file)); return result; }).catch(e => e); return oss_result; }; function* wait(s) { s = s || 1; return new Promise((resolve) => { setTimeout(resolve, s * 1000); }); }