@catladder/pipeline
Version:
Panter workflow for cloud CI/CD and DevOps
96 lines (95 loc) • 4.79 kB
JavaScript
;
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;