UNPKG

@catladder/pipeline

Version:

Panter workflow for cloud CI/CD and DevOps

96 lines (95 loc) 4.79 kB
"use strict"; var __assign = this && this.__assign || function () { __assign = Object.assign || function (t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; var __read = this && this.__read || function (o, n) { var m = typeof Symbol === "function" && o[Symbol.iterator]; if (!m) return o; var i = m.call(o), r, ar = [], e; try { while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); } catch (error) { e = { error: error }; } finally { try { if (r && !r.done && (m = i["return"])) m.call(i); } finally { if (e) throw e.error; } } return ar; }; var __spreadArray = this && this.__spreadArray || function (to, from, pack) { if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { if (ar || !(i in from)) { if (!ar) ar = Array.prototype.slice.call(from, 0, i); ar[i] = from[i]; } } return to.concat(ar || Array.prototype.slice.call(from)); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.createKubernetesDeployJobs = void 0; var getEnvironmentVariables_1 = require("../../context/getEnvironmentVariables"); var runner_1 = require("../../runner"); var base_1 = require("../base"); var sbom_1 = require("../sbom"); var types_1 = require("../types"); var kubeValues_1 = require("./kubeValues"); var bashYaml_1 = require("../../bash/bashYaml"); var gitlab_1 = require("../../utils/gitlab"); var ALL_VALUES_FILE = "__all_values.yml"; var createKubernetesDeployJobs = function (context) { var _a, _b, _c; var deployConfig = (_a = context.deploy) === null || _a === void 0 ? void 0 : _a.config; if (!(0, types_1.isOfDeployType)(deployConfig, "kubernetes")) { // should not happen throw new Error("deploy config is not kubernetes"); } var shared = __assign(__assign({ image: (0, runner_1.getRunnerImage)("kubernetes") }, deployConfig.debug ? { artifacts: { paths: [ALL_VALUES_FILE // debug ], when: "always" } } : {}), { variables: __assign(__assign({}, context.environment.envVars), { RELEASE_NAME: context.environment.fullName, HELM_EXPERIMENTAL_OCI: "1", KUBE_DOCKER_IMAGE_PULL_SECRET: "gitlab-registry-".concat(context.name), HELM_GITLAB_CHART_NAME: (_b = deployConfig.chartName) !== null && _b !== void 0 ? _b : "/helm-charts/the-panter-chart", HELM_ARGS: __spreadArray(__spreadArray([], __read(deployConfig.debug ? ["--debug"] : []), false), __read((_c = deployConfig.additionalHelmArgs) !== null && _c !== void 0 ? _c : []), false).join(" "), COMPONENT_NAME: context.name }) }); var clusterName = "kube-".concat(context.environment.fullName); var connectContext = ["kubectl config set-cluster \"".concat(clusterName, "\" --server=\"$").concat((0, getEnvironmentVariables_1.getSecretVarNameForContext)(context, "KUBE_URL"), "\" --certificate-authority <(echo $").concat((0, getEnvironmentVariables_1.getSecretVarNameForContext)(context, "KUBE_CA_PEM"), " | base64 -d) --embed-certs=true"), "kubectl config set-credentials \"".concat(clusterName, "\" --token=\"$").concat((0, getEnvironmentVariables_1.getSecretVarNameForContext)(context, "KUBE_TOKEN"), "\""), "kubectl config set-context \"".concat(clusterName, "\" --cluster=\"").concat(clusterName, "\" --user=\"").concat(clusterName, "\" --namespace=\"").concat(context.environment.envVars.KUBE_NAMESPACE, "\""), "kubectl config use-context \"".concat(clusterName, "\"")]; return (0, base_1.createDeployementJobs)(context, { deploy: __assign(__assign({}, shared), { script: __spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], __read(connectContext), false), __read((0, gitlab_1.collapseableSection)("writeallvalues", "Write " + ALL_VALUES_FILE + " for helm deployment")((0, bashYaml_1.writeBashYamlToFileScript)((0, kubeValues_1.createKubeValues)(context), ALL_VALUES_FILE))), false), ["kubernetesCreateSecret", "kubernetesDeploy"], false), __read((0, sbom_1.getDependencyTrackUploadScript)(context)), false), ["echo deployment successful 😻"], false) }), stop: __assign(__assign({}, shared), { script: __spreadArray(__spreadArray(__spreadArray([], __read(connectContext), false), ["kubernetesDelete"], false), __read((0, sbom_1.getDependencyTrackDeleteScript)(context)), false) }), rollback: __assign(__assign({}, shared), { script: __spreadArray(__spreadArray([], __read(connectContext), false), ["kubernetesRollback"], false) }) }); }; exports.createKubernetesDeployJobs = createKubernetesDeployJobs;