UNPKG

@catladder/cli

Version:

Panter cli tool for cloud CI/CD and DevOps

78 lines 4.4 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getCloudRunJobsWithNames = exports.getJobCreateScripts = exports.getDeleteJobsScripts = void 0; const getLabels_1 = require("../../../context/getLabels"); const utils_1 = require("../../../utils"); const createArgsString_1 = require("../utils/createArgsString"); const jobName_1 = require("../utils/jobName"); const common_1 = require("./common"); const constants_1 = require("./constants"); const volumes_1 = require("./volumes"); const getJobOrServiceArgs_1 = require("../utils/getJobOrServiceArgs"); const getDeleteJobsScripts = (context) => { const commonArgs = (0, common_1.getCommonCloudRunArgs)(context); const commonArgsString = (0, createArgsString_1.createArgsString)(commonArgs); const jobsWithNames = (0, exports.getCloudRunJobsWithNames)(context); return jobsWithNames.flatMap(({ fullJobName }) => [ // first delete all job executions. Otherwise delete might fail if one of those is still running `${(0, common_1.gcloudRunCmd)()} jobs executions list ${commonArgsString} --job ${fullJobName} --format="value(name)" | xargs -I {} ${(0, common_1.gcloudRunCmd)()} jobs executions delete {} --quiet ${commonArgsString}`, `${(0, common_1.gcloudRunCmd)()} jobs delete ${fullJobName} ${commonArgsString}`, ]); }; exports.getDeleteJobsScripts = getDeleteJobsScripts; const getJobCreateScripts = (context) => (0, exports.getCloudRunJobsWithNames)(context).map(({ job, fullJobName }, jobIndex) => { var _a, _b, _c, _d, _e; const commandArray = Array.isArray(job.command) ? job.command : job.command.split(" "); const { image: commonImage, project, region, ...deployArgs } = (0, common_1.getCommonDeployArgs)(context); const commonDeployArgsString = (0, createArgsString_1.createArgsString)({ command: `"${commandArray.join(",")}"`, args: (0, getJobOrServiceArgs_1.getCloudRunServiceOrJobArgsArg)(job.args), labels: `"${(0, common_1.makeLabelString)((0, getLabels_1.getLabels)(context))},cloud-run-job-name=$current_job_name"`, image: `"${(_a = job.image) !== null && _a !== void 0 ? _a : commonImage}"`, project, region, cpu: job.cpu, memory: (_b = job.memory) !== null && _b !== void 0 ? _b : "512Mi", parallelism: (_c = job.parallelism) !== null && _c !== void 0 ? _c : 1, "task-timeout": (_d = job.timeout) !== null && _d !== void 0 ? _d : "10m", "env-vars-file": constants_1.ENV_VARS_FILENAME, "max-retries": (_e = job.maxRetries) !== null && _e !== void 0 ? _e : 0, ...deployArgs, // network "vpc-connector": job === null || job === void 0 ? void 0 : job.vpcConnector, "vpc-egress": job === null || job === void 0 ? void 0 : job.vpcEgress, network: job === null || job === void 0 ? void 0 : job.network, subnet: job === null || job === void 0 ? void 0 : job.subnet, }, ...(0, volumes_1.createVolumeConfig)(job.volumes, "job")); return [ jobIndex === 0 ? `exist_job_names="$(\n ${(0, common_1.gcloudRunCmd)()} jobs list --filter='metadata.name ~ ${context.env}.*${context.name}' --format='value(name)' --limit=999 --project='${project}' --region='${region}'\n)"` : null, `current_job_name="${fullJobName}"`, 'if echo "$exist_job_names" | grep -Fx "$current_job_name" >/dev/null; then', ` ${(0, common_1.gcloudRunCmd)()} jobs update "$current_job_name" ${commonDeployArgsString}`, "else", ` ${(0, common_1.gcloudRunCmd)()} jobs create "$current_job_name" ${commonDeployArgsString}`, "fi", ] .filter(utils_1.notNil) .join("\n"); }); exports.getJobCreateScripts = getJobCreateScripts; const getCloudRunJobsWithNames = (context) => { var _a; const deployConfig = (0, common_1.getCloudRunDeployConfig)(context); const jobsWithNames = Object.entries((_a = deployConfig.jobs) !== null && _a !== void 0 ? _a : {}) // filter out disabled jobs .filter((entry) => Boolean(entry[1])) .map(([jobName, job]) => ({ fullJobName: (0, jobName_1.getFullJobName)(context, jobName), job, jobName, })); return jobsWithNames; }; exports.getCloudRunJobsWithNames = getCloudRunJobsWithNames; //# sourceMappingURL=cloudRunJobs.js.map