UNPKG

@veecode-platform/safira-cli

Version:

Generate a microservice project from your spec.

80 lines (79 loc) 3.85 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.CiCdSetup = void 0; const git_providers_1 = require("../git/git-providers"); const credentials_1 = require("../vkpr/credentials/credentials"); const bitbucket_1 = require("./pipeline/bitbucket"); const github_1 = require("./pipeline/github"); const gitlab_1 = require("./pipeline/gitlab"); const safira_settings_1 = require("../safira-project/safira-settings"); const spring_cy_1 = require("../generate/template/cipipeline/spring/spring-cy"); const quarkus_cy_1 = require("../generate/template/cipipeline/quarkus/quarkus-cy"); const git_utils_1 = require("../git/git-utils"); class CiCdSetup { constructor() { } async setup(params) { const folder = params["project-folder"]; const subFolder = params["project-subfolder"]; const path = params["project-path"]; const branch = params["branch-name"]; const ciProvider = params["ci-provider"]; const project = git_utils_1.GitUtils.generateRepoUrl(params["project-name"], ciProvider); const credential = credentials_1.Credentials.instance.getCredential(credentials_1.CredentialsKey[ciProvider]); if (!credential) { throw new Error(`Credentials for ${ciProvider} not found`); } const dockerCredentials = credentials_1.Credentials.instance.getCredential(credentials_1.CredentialsKey.dockerRegistry); const gitCredential = credentials_1.Credentials.instance.getCredential(credentials_1.CredentialsKey[ciProvider]); const framework = safira_settings_1.SafiraSettings.instance(project).loadSettingsFile().project.framework; const managment = "s"; if (framework && managment) { const params = { writeFilePath: path, provider: ciProvider, managment: managment, }; switch (framework) { case "springboot": spring_cy_1.SpringCi.instance.create(params); break; case "quarkus": quarkus_cy_1.QuarkusCi.instance.create(params); break; default: console.log("Framework not found"); break; } } const paramsList = [ { key: "SF_PROJECT_NAME", value: project, secret: false, scope: branch }, { key: "SF_HTTPS_REPOSITORY", value: project, secret: false, scope: branch }, { key: "SF_REGISTRY", value: dockerCredentials.credential.endpoint, secret: false, scope: branch }, { key: "SF_REGISTRY_PASSWORD", value: dockerCredentials.credential.password, secret: true, scope: branch }, { key: "SF_REGISTRY_USER", value: dockerCredentials.credential.username, secret: false, scope: branch }, { key: "SF_GIT_DEST", value: project, secret: false, scope: branch }, { key: "GIT_PASS", value: gitCredential.credential.token, secret: true, scope: branch }, ]; const instance = this._getPipeline(ciProvider); await instance.setup(project, paramsList); } _getPipeline(provider) { switch (provider) { case git_providers_1.GitProviderEnum.bitbucket: return new bitbucket_1.BitbucketPipeline(); case git_providers_1.GitProviderEnum.github: return new github_1.GithubPipeline(); case git_providers_1.GitProviderEnum.gitlab: return new gitlab_1.GitlabPipeline(); default: throw new Error(`Provider ${provider} not found`); } } static get instance() { if (!this._instance) { this._instance = new this(); } return this._instance; } } exports.CiCdSetup = CiCdSetup;