cloudapp-cli
Version:
84 lines (70 loc) • 1.83 kB
JavaScript
const AdmZip = require("adm-zip");
const COS = require("cos-nodejs-sdk-v5");
const { program } = require("commander");
const uuid = require("../lib/uuid");
const { format } = require("../lib/date");
const { createClient } = require("../lib/capi");
const { getLocalDir, getPackageId } = require("../lib/pkg");
const { run } = require("../lib/verify");
const capi = createClient();
program.argument("[dir]", "云应用配置目录");
program.parse(process.argv);
async function push() {
const dir = program.args[0] || process.cwd();
const pkgId = getPackageId(dir);
const localDir = getLocalDir(dir);
// 压缩配置目录
// @ts-ignore
const zip = new AdmZip();
zip.addLocalFolder(localDir);
const devVersion = `dev_${format()}`;
const fileKey = `${pkgId}/${devVersion}_${uuid()}.zip`;
// 获取签名
const {
Bucket,
Region,
Domain,
Key,
TmpSecretId,
TmpSecretKey,
SessionToken,
ExpiredTime,
StartTime,
} = await capi.PreparePackageVersion({
FileKey: fileKey,
PackageId: pkgId,
});
const cos = new COS({
// Domain,
getAuthorization: (_, callback) => {
callback({
TmpSecretId,
TmpSecretKey,
SecurityToken: SessionToken,
ExpiredTime,
StartTime,
});
},
});
await cos.putObject({
Bucket,
Region,
Key,
Body: zip.toBuffer(),
});
const { DevVersion } = await capi.CommitPackageVersion({
PackageId: pkgId,
DevVersion: devVersion,
Key,
});
console.log(`+ ${pkgId}@${DevVersion}`);
const isCiEnv =
!!process.env.CI || !!process.env.QCI_VERSION || !!process.env.landun_env;
if (!isCiEnv) {
console.log(
` Install link: https://console.cloud.tencent.com/cloudapp/install/${pkgId}@${DevVersion}`
);
}
}
run(push);