UNPKG

@veecode-platform/safira-cli

Version:

Generate a microservice project from your spec.

53 lines (52 loc) 3.96 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.DockerBuildUtils = exports.DockerBuildImpl = void 0; const tslib_1 = require("tslib"); const file_system_utils_1 = require("../utils/file-system-utils"); const properties = tslib_1.__importStar(require("../properties.json")); const build_java_1 = require("./java/build-java"); const string_utils_1 = require("../utils/string-utils"); const commands_1 = require("../kubectl/commands"); const safira_settings_1 = require("../safira-project/safira-settings"); const java_framework_enum_1 = require("../generate/java/java-framework-enum"); const yaml_utils_1 = require("../utils/yaml-utils"); const credentials_1 = require("../vkpr/credentials/credentials"); const docker_command_1 = require("../docker/docker-command"); class DockerBuildImpl { async build(params) { console.log("Building docker image" + JSON.stringify(params)); console.log(`Building docker image ${params.projectName}:${params.tag}`); const selectedDockerFile = string_utils_1.StringUtils.getFullFileName(params.dockerFile); const dockerFileRelative = `${file_system_utils_1.FileSystemUtils.relativePath(params.dockerFile)}`; console.log(`Selected docker file: ${selectedDockerFile}`); console.log(`RELATIVE PATH: ${dockerFileRelative}`); const currentPath = file_system_utils_1.FileSystemUtils.getCurrentPath(); const settings = safira_settings_1.SafiraSettings.instance(file_system_utils_1.FileSystemUtils.buildPath(currentPath, ".safira")).loadSettingsFile(); await new build_java_1.BuildJava().build(params.projectPath, params.version, selectedDockerFile, settings.project.framework, params.skipTest); const credential = credentials_1.Credentials.instance.getCredential(credentials_1.CredentialsKey.dockerRegistry); if (settings.project.framework === java_framework_enum_1.JavaFrameworksEnum.springboot) { console.log("Building spring boot image"); await docker_command_1.DockerCommand.instance.buildDocker(dockerFileRelative, params.dockerRepository, params.projectName, params.tag); await docker_command_1.DockerCommand.instance.loginDocker(credential.credential.username, credential.credential.password, credential.credential.endpoint); console.log("Publishing spring boot image"); await docker_command_1.DockerCommand.instance.pushDocker(params.dockerRepository, params.projectName, params.tag); console.log("Updating k8s artefacts"); const deploymentFilePath = file_system_utils_1.FileSystemUtils.buildPath(currentPath, ".safira", "k8s", "deployment.yaml"); if (file_system_utils_1.FileSystemUtils.exists(deploymentFilePath)) { const deploymentContent = yaml_utils_1.YamlUtils.loadYamlFile(deploymentFilePath); deploymentContent.spec.template.spec.containers[0].image = `${credential.credential.username}/${params.projectName}:${params.version}`; file_system_utils_1.FileSystemUtils.writeFile(deploymentFilePath, yaml_utils_1.YamlUtils.stringify(deploymentContent)); } } await (settings.project.framework === "quarkus" ? commands_1.KubernetesApply.instance.command([file_system_utils_1.FileSystemUtils.buildPath(currentPath, "target", "kubernetes", "kubernetes.yml")]) : commands_1.KubernetesApply.instance.command([file_system_utils_1.FileSystemUtils.buildPath(currentPath, ".safira", "k8s")])); } } exports.DockerBuildImpl = DockerBuildImpl; class DockerBuildUtils { static listDockerFiles(folder) { return file_system_utils_1.FileSystemUtils.readDir(folder) .filter(file => file.toLowerCase().startsWith(properties.build["docker-file-prefix"]?.toLowerCase())) .filter(file => file_system_utils_1.FileSystemUtils.isFile(`${folder}/${file}`)); } } exports.DockerBuildUtils = DockerBuildUtils;