@topgroup/diginext
Version:
A BUILD SERVER & CLI to deploy apps to any Kubernetes clusters.
49 lines (48 loc) • 2.37 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.execRollOut = void 0;
const log_1 = require("diginext-utils/dist/xconsole/log");
const inquirer_1 = __importDefault(require("inquirer"));
const lodash_1 = require("lodash");
const mongodb_1 = require("../../plugins/mongodb");
const fetchApi_1 = __importDefault(require("../api/fetchApi"));
const app_helper_1 = require("../apps/app-helper");
const ask_project_and_app_1 = require("../apps/ask-project-and-app");
const k8s_1 = __importDefault(require("../k8s"));
const execRollOut = async (options) => {
const { secondAction, targetDirectory } = options;
let releaseId = secondAction;
if (!releaseId) {
(0, log_1.logWarn)(`Release ID is required, for example: "dx rollout <release-id>", trying to get some latest releases of this app...`);
const { app } = await (0, ask_project_and_app_1.askForProjectAndApp)(options.targetDirectory, options);
const appConfig = (0, app_helper_1.getAppConfigFromApp)(app);
if (!appConfig) {
(0, log_1.logError)(`Not found deploy environment config on Diginext workspace.`);
return;
}
const { project, slug } = appConfig;
(0, log_1.log)(`Looking for some latest releases of this app (${project}/${slug})...`);
const releaseURL = `/api/v1/release?sort=-createdAt&limit=5&active=false&projectSlug=${project}&appSlug=${slug}`;
const { data } = await (0, fetchApi_1.default)({ url: releaseURL });
const latestReleases = data;
// log({ data });
if ((0, lodash_1.isEmpty)(latestReleases)) {
(0, log_1.logError)(`No available releases for this app.`);
return;
}
const { selectedId } = await inquirer_1.default.prompt({
name: "selectedId",
type: "list",
message: "Select your release to roll out:",
choices: latestReleases.map((p) => {
return { name: `${p.slug} (created by "${p.createdBy}")`, value: mongodb_1.MongoDB.toString(p._id) };
}),
});
releaseId = selectedId;
}
await k8s_1.default.rollout(releaseId);
};
exports.execRollOut = execRollOut;