UNPKG

@topgroup/diginext

Version:

A BUILD SERVER & CLI to deploy apps to any Kubernetes clusters.

49 lines (48 loc) 2.37 kB
"use strict"; 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;