@veecode-platform/safira-cli
Version:
Generate a microservice project from your spec.
80 lines (79 loc) • 3.85 kB
JavaScript
;
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;