@catladder/pipeline
Version:
Panter workflow for cloud CI/CD and DevOps
60 lines (51 loc) • 1.87 kB
text/typescript
import type { ComponentContext } from "../../../types/context";
import { isOfDeployType } from "../../types";
import type { DeployConfigCloudRun } from "../../types/googleCloudRun";
import { getArtifactsRegistryImage } from "../artifactsRegistry";
export const gcloudCmd = (version?: "beta") => {
return version ? `gcloud ${version}` : "gcloud";
};
export const gcloudRunCmd = (version?: "beta") => {
return `${gcloudCmd(version)} run`;
};
export const gcloudSchedulerCmd = (version?: "beta") => {
return `${gcloudCmd(version)} scheduler`;
};
export const setGoogleProjectNumberScript = (
deployConfig: DeployConfigCloudRun,
) => [
`export GCLOUD_PROJECT_NUMBER=$(${gcloudCmd()} projects describe ${
deployConfig.projectId
} --format="value(projectNumber)")`,
'echo "GCLOUD_PROJECT_NUMBER: $GCLOUD_PROJECT_NUMBER"',
];
export const makeLabelString = (obj: Record<string, unknown>) =>
Object.entries(obj)
.map(([key, value]) => `${key}=${value}`)
.join(",");
export const getCloudRunDeployConfig = (context: ComponentContext) => {
const deployConfig = context.deploy?.config;
if (!isOfDeployType(deployConfig, "google-cloudrun")) {
// should not happen
throw new Error("deploy config is wrong");
}
return deployConfig;
};
export function getCommonCloudRunArgs(context: ComponentContext) {
const deployConfig = getCloudRunDeployConfig(context);
return {
project: deployConfig.projectId,
region: deployConfig.region,
};
}
export function getCommonDeployArgs(context: ComponentContext) {
const commonArgs = getCommonCloudRunArgs(context);
const deployConfig = getCloudRunDeployConfig(context);
return {
image: getArtifactsRegistryImage(context),
...commonArgs,
"set-cloudsql-instances": deployConfig.cloudSql
? deployConfig.cloudSql.instanceConnectionName
: undefined,
};
}