UNPKG

@pubgcorp/pk-template

Version:
181 lines 13.3 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.buildPkd = exports.isVirtualObject = exports.pkIoApiVersion = void 0; const pkyaml = __importStar(require("../pk-yaml")); const lazy_1 = require("../lazy"); const pkt_1 = require("../pkt/pkt"); const utils_1 = require("../pk-template/utils"); exports.pkIoApiVersion = 'pk.io/v1'; const isVirtualObject = (o) => o.apiVersion === exports.pkIoApiVersion; exports.isVirtualObject = isVirtualObject; const objectError = (object, err) => { console.log(pkyaml.dumpYaml(object)); console.error((0, lazy_1.getChalk)().red('ERROR: ' + err)); process.exit(1); }; const buildCatalog = (buildInfo, objects) => { const catalog = objects .filter(o => !(0, exports.isVirtualObject)(o)) .map(o => { const kind = o.kind; const avs = o.apiVersion.split('/'); const apiGroup = avs.length == 2 ? avs[0] : ''; const namespace = o.metadata.namespace || ''; const name = o.metadata.name; const sha = (o.metadata.annotations && o.metadata.annotations['pk.io/sha']) || (0, utils_1.sha256)(o, 8); return `${kind}/${apiGroup}/${name}/${namespace}/${sha}`; }) .join('\n'); return { apiVersion: "v1", kind: "ConfigMap", metadata: { name: buildInfo.name, namespace: "pk-deployments", annotations: { "pkt.io/type": "pk-deployment", "pkt.io/pk-deployment-id": buildInfo.id, "pkt.io/pk-deployment-name": buildInfo.name, }, }, data: { header: '\n' + '#--------------------------------------------------------\n' + '# DEPLOYMENT SPEC\n' + '#--------------------------------------------------------\n' + '\n' + pkyaml.dumpYaml(buildInfo) + '\n' + '#--------------------------------------------------------\n' + '\n', catalog: catalog, }, }; }; const expandNamespaceSpec = (namespaceSpec, conf, app, envName, clusterName) => { return namespaceSpec.replace(/({\w+})/g, (m, p1, p2) => { const key = m.substr(1, m.length - 2); if (key == 'project') { return conf.data.project.name; } if (key == 'app') { return app.name; } if (key == 'env') { return envName; } if (key == 'cluster') { return clusterName; } throw new Error(`unknown key from namespace {${key}}`); }); }; const validateObjects = (objects) => { for (const o of objects) { if (!o.metadata) { objectError(o, 'object does not have metadata'); } if (!o.kind) { objectError(o, 'object does not have kind'); } if (!o.apiVersion) { objectError(o, 'object does not have apiVersion'); } if (!o.metadata.name) { objectError(o, 'object does not have name'); } } }; const makeBuildSpec = (conf, app, envName, clusterName) => { const namespaceSpec = app.namespace || conf.data.namespace || '{project}-{app}-{env}'; const namespace = expandNamespaceSpec(namespaceSpec, conf, app, envName, clusterName); const deploymentName = `${conf.data.project.name}-${app.name}-${envName}-${clusterName}`; const deploymentId = `${app.id}-${envName}-${clusterName}`; const buildSpec = { id: deploymentId, name: deploymentName, created: new Date().toJSON(), project: conf.data.project, cluster: clusterName, namespace, git: { repo: (0, utils_1.repository)(), path: (0, utils_1.repositoryPath)('./app.pkt'), }, app: { name: app.name, id: app.id, }, env: envName, }; if (app.owner) { buildSpec.app.owner = app.owner; } return buildSpec; }; const buildPkd = (conf, appName, envName, clusterName) => __awaiter(void 0, void 0, void 0, function* () { const app = conf.getApp(appName); if (!app) { throw new Error(`app ${appName} not exits`); } const env = conf.getMergedEnv(appName, envName, clusterName); if (!env) { throw new Error(`app ${appName} does not have env ${envName}`); } const buildSpec = makeBuildSpec(conf, app, envName, clusterName); let objects = yield (0, pkt_1.generate)({ options: {}, file: `app.pkt`, env: env.name, values: { // ...env.values, namespace: buildSpec.namespace, env: env.name, cluster: clusterName, deployment: buildSpec, }, }); objects = objects.map(o => o); validateObjects(objects); const catalogObject = buildCatalog(buildSpec, objects); objects.push(catalogObject); const pkd = { header: buildSpec, objects, }; return pkd; }); exports.buildPkd = buildPkd; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcGstZGVwbG95L2J1aWxkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EsbURBQXFDO0FBQ3JDLGtDQUFtQztBQUluQyxvQ0FBc0M7QUFDdEMsZ0RBQTBFO0FBRzdELFFBQUEsY0FBYyxHQUFHLFVBQVUsQ0FBQztBQUNsQyxNQUFNLGVBQWUsR0FBRyxDQUFDLENBQVUsRUFBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsS0FBSyxzQkFBYyxDQUFDO0FBQTNFLFFBQUEsZUFBZSxtQkFBNEQ7QUFFeEYsTUFBTSxXQUFXLEdBQUcsQ0FBQyxNQUFlLEVBQUUsR0FBVyxFQUFFLEVBQUU7SUFDbkQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDckMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFBLGVBQVEsR0FBRSxDQUFDLEdBQUcsQ0FBQyxTQUFTLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUMvQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2xCLENBQUMsQ0FBQTtBQUVELE1BQU0sWUFBWSxHQUFHLENBQUMsU0FBOEIsRUFBRSxPQUFrQixFQUFFLEVBQUU7SUFFMUUsTUFBTSxPQUFPLEdBQUcsT0FBTztTQUNwQixNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUEsdUJBQWUsRUFBQyxDQUFDLENBQUMsQ0FBQztTQUNoQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7UUFDUCxNQUFNLElBQUksR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ3BCLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3BDLE1BQU0sUUFBUSxHQUFHLEdB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