@catladder/cli
Version:
Panter cli tool for cloud CI/CD and DevOps
78 lines • 4.4 kB
JavaScript
;
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