indraq_cli 1.5.8 → 1.9.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -21
- package/README.md +1517 -1686
- package/cloud-api/.dockerignore +18 -0
- package/cloud-api/.env.example +14 -0
- package/cloud-api/Dockerfile +19 -0
- package/cloud-api/README.md +141 -0
- package/cloud-api/package-lock.json +2250 -0
- package/cloud-api/package.json +29 -0
- package/cloud-api/sql/001_init.sql +8 -0
- package/cloud-api/sql/002_user_providers_and_project_resources.sql +40 -0
- package/cloud-api/sql/003_environment_infrastructure.sql +19 -0
- package/cloud-api/sql/004_managed_aws_credentials.sql +20 -0
- package/cloud-api/sql/005_project_members_and_resource_grants.sql +22 -0
- package/cloud-api/sql/006_catalog_identity_password_security.sql +96 -0
- package/cloud-api/sql/007_aws_access_key_rotation.sql +16 -0
- package/cloud-api/src/index.ts +1254 -0
- package/cloud-api/tsconfig.json +18 -0
- package/dist/cli/create-program.d.ts.map +1 -1
- package/dist/cli/create-program.js +21 -3
- package/dist/cli/create-program.js.map +1 -1
- package/dist/cli/doctor.command.d.ts +1 -1
- package/dist/cli/doctor.command.d.ts.map +1 -1
- package/dist/cli/doctor.command.js +70 -12
- package/dist/cli/doctor.command.js.map +1 -1
- package/dist/cli/help-content.d.ts +1 -1
- package/dist/cli/help-content.d.ts.map +1 -1
- package/dist/cli/help-content.js +256 -177
- package/dist/cli/help-content.js.map +1 -1
- package/dist/modules/access/commands/access.command.d.ts +3 -0
- package/dist/modules/access/commands/access.command.d.ts.map +1 -0
- package/dist/modules/access/commands/access.command.js +226 -0
- package/dist/modules/access/commands/access.command.js.map +1 -0
- package/dist/modules/access/index.d.ts +3 -0
- package/dist/modules/access/index.d.ts.map +1 -0
- package/dist/modules/access/index.js +11 -0
- package/dist/modules/access/index.js.map +1 -0
- package/dist/modules/aws/commands/configure-aws.command.d.ts +2 -0
- package/dist/modules/aws/commands/configure-aws.command.d.ts.map +1 -0
- package/dist/modules/aws/commands/configure-aws.command.js +7 -0
- package/dist/modules/aws/commands/configure-aws.command.js.map +1 -0
- package/dist/modules/aws/commands/dns.command.d.ts +22 -0
- package/dist/modules/aws/commands/dns.command.d.ts.map +1 -0
- package/dist/modules/aws/commands/dns.command.js +229 -0
- package/dist/modules/aws/commands/dns.command.js.map +1 -0
- package/dist/modules/aws/commands/healthcheck.command.d.ts +22 -0
- package/dist/modules/aws/commands/healthcheck.command.d.ts.map +1 -0
- package/dist/modules/aws/commands/healthcheck.command.js +125 -0
- package/dist/modules/aws/commands/healthcheck.command.js.map +1 -0
- package/dist/modules/aws/commands/iam.command.d.ts +24 -0
- package/dist/modules/aws/commands/iam.command.d.ts.map +1 -0
- package/dist/modules/aws/commands/iam.command.js +219 -0
- package/dist/modules/aws/commands/iam.command.js.map +1 -0
- package/dist/modules/aws/config/aws-config.d.ts +23 -0
- package/dist/modules/aws/config/aws-config.d.ts.map +1 -0
- package/dist/modules/aws/config/aws-config.js +72 -0
- package/dist/modules/aws/config/aws-config.js.map +1 -0
- package/dist/modules/aws/index.d.ts +3 -0
- package/dist/modules/aws/index.d.ts.map +1 -0
- package/dist/modules/aws/index.js +54 -0
- package/dist/modules/aws/index.js.map +1 -0
- package/dist/modules/aws/services/aws-clients.d.ts +9 -0
- package/dist/modules/aws/services/aws-clients.d.ts.map +1 -0
- package/dist/modules/aws/services/aws-clients.js +43 -0
- package/dist/modules/aws/services/aws-clients.js.map +1 -0
- package/dist/modules/aws/services/route53-lookup.service.d.ts +9 -0
- package/dist/modules/aws/services/route53-lookup.service.d.ts.map +1 -0
- package/dist/modules/aws/services/route53-lookup.service.js +57 -0
- package/dist/modules/aws/services/route53-lookup.service.js.map +1 -0
- package/dist/modules/cloud/commands/cloud.command.d.ts +38 -0
- package/dist/modules/cloud/commands/cloud.command.d.ts.map +1 -0
- package/dist/modules/cloud/commands/cloud.command.js +443 -0
- package/dist/modules/cloud/commands/cloud.command.js.map +1 -0
- package/dist/modules/cloud/commands/credentials.command.d.ts +5 -0
- package/dist/modules/cloud/commands/credentials.command.d.ts.map +1 -0
- package/dist/modules/cloud/commands/credentials.command.js +25 -0
- package/dist/modules/cloud/commands/credentials.command.js.map +1 -0
- package/dist/modules/cloud/commands/environment.command.d.ts +6 -0
- package/dist/modules/cloud/commands/environment.command.d.ts.map +1 -0
- package/dist/modules/cloud/commands/environment.command.js +75 -0
- package/dist/modules/cloud/commands/environment.command.js.map +1 -0
- package/dist/modules/cloud/commands/provider.command.d.ts +3 -0
- package/dist/modules/cloud/commands/provider.command.d.ts.map +1 -0
- package/dist/modules/cloud/commands/provider.command.js +193 -0
- package/dist/modules/cloud/commands/provider.command.js.map +1 -0
- package/dist/modules/cloud/config/cloud-config.d.ts +19 -0
- package/dist/modules/cloud/config/cloud-config.d.ts.map +1 -0
- package/dist/modules/cloud/config/cloud-config.js +53 -0
- package/dist/modules/cloud/config/cloud-config.js.map +1 -0
- package/dist/modules/cloud/index.d.ts +3 -0
- package/dist/modules/cloud/index.d.ts.map +1 -0
- package/dist/modules/cloud/index.js +62 -0
- package/dist/modules/cloud/index.js.map +1 -0
- package/dist/modules/cloud/services/cloud-api.service.d.ts +17 -0
- package/dist/modules/cloud/services/cloud-api.service.d.ts.map +1 -0
- package/dist/modules/cloud/services/cloud-api.service.js +61 -0
- package/dist/modules/cloud/services/cloud-api.service.js.map +1 -0
- package/dist/modules/cloud/services/cloud-aws.service.d.ts +23 -0
- package/dist/modules/cloud/services/cloud-aws.service.d.ts.map +1 -0
- package/dist/modules/cloud/services/cloud-aws.service.js +26 -0
- package/dist/modules/cloud/services/cloud-aws.service.js.map +1 -0
- package/dist/modules/cloud/services/cloud-ghcr.service.d.ts +12 -0
- package/dist/modules/cloud/services/cloud-ghcr.service.d.ts.map +1 -0
- package/dist/modules/cloud/services/cloud-ghcr.service.js +31 -0
- package/dist/modules/cloud/services/cloud-ghcr.service.js.map +1 -0
- package/dist/modules/cloud/services/cloud-jenkins.service.d.ts +29 -0
- package/dist/modules/cloud/services/cloud-jenkins.service.d.ts.map +1 -0
- package/dist/modules/cloud/services/cloud-jenkins.service.js +236 -0
- package/dist/modules/cloud/services/cloud-jenkins.service.js.map +1 -0
- package/dist/modules/cloud/services/cloud-npm.service.d.ts +3 -0
- package/dist/modules/cloud/services/cloud-npm.service.d.ts.map +1 -0
- package/dist/modules/cloud/services/cloud-npm.service.js +13 -0
- package/dist/modules/cloud/services/cloud-npm.service.js.map +1 -0
- package/dist/modules/cloud/services/environment.service.d.ts +25 -0
- package/dist/modules/cloud/services/environment.service.d.ts.map +1 -0
- package/dist/modules/cloud/services/environment.service.js +21 -0
- package/dist/modules/cloud/services/environment.service.js.map +1 -0
- package/dist/modules/cloud/services/managed-aws-credential.service.d.ts +36 -0
- package/dist/modules/cloud/services/managed-aws-credential.service.d.ts.map +1 -0
- package/dist/modules/cloud/services/managed-aws-credential.service.js +35 -0
- package/dist/modules/cloud/services/managed-aws-credential.service.js.map +1 -0
- package/dist/modules/cloud/services/project-cloud.service.d.ts +28 -0
- package/dist/modules/cloud/services/project-cloud.service.d.ts.map +1 -0
- package/dist/modules/cloud/services/project-cloud.service.js +50 -0
- package/dist/modules/cloud/services/project-cloud.service.js.map +1 -0
- package/dist/modules/cloud/services/user-provider.service.d.ts +17 -0
- package/dist/modules/cloud/services/user-provider.service.d.ts.map +1 -0
- package/dist/modules/cloud/services/user-provider.service.js +25 -0
- package/dist/modules/cloud/services/user-provider.service.js.map +1 -0
- package/dist/modules/configure/configure.command.d.ts.map +1 -1
- package/dist/modules/configure/configure.command.js +17 -94
- package/dist/modules/configure/configure.command.js.map +1 -1
- package/dist/modules/deploy/commands/build.command.d.ts +1 -2
- package/dist/modules/deploy/commands/build.command.d.ts.map +1 -1
- package/dist/modules/deploy/commands/build.command.js +82 -124
- package/dist/modules/deploy/commands/build.command.js.map +1 -1
- package/dist/modules/deploy/index.d.ts.map +1 -1
- package/dist/modules/deploy/index.js +10 -30
- package/dist/modules/deploy/index.js.map +1 -1
- package/dist/modules/deploy/services/docker.service.d.ts +6 -3
- package/dist/modules/deploy/services/docker.service.d.ts.map +1 -1
- package/dist/modules/deploy/services/docker.service.js +8 -11
- package/dist/modules/deploy/services/docker.service.js.map +1 -1
- package/dist/modules/dockerfile/commands/create-dockerfile.command.d.ts +13 -0
- package/dist/modules/dockerfile/commands/create-dockerfile.command.d.ts.map +1 -0
- package/dist/modules/dockerfile/commands/create-dockerfile.command.js +39 -0
- package/dist/modules/dockerfile/commands/create-dockerfile.command.js.map +1 -0
- package/dist/modules/dockerfile/index.d.ts +3 -0
- package/dist/modules/dockerfile/index.d.ts.map +1 -0
- package/dist/modules/dockerfile/index.js +7 -0
- package/dist/modules/dockerfile/index.js.map +1 -0
- package/dist/modules/jenkins/commands/admin.command.d.ts +22 -0
- package/dist/modules/jenkins/commands/admin.command.d.ts.map +1 -0
- package/dist/modules/jenkins/commands/admin.command.js +128 -0
- package/dist/modules/jenkins/commands/admin.command.js.map +1 -0
- package/dist/modules/jenkins/commands/create-deployment.command.d.ts +13 -0
- package/dist/modules/jenkins/commands/create-deployment.command.d.ts.map +1 -0
- package/dist/modules/jenkins/commands/create-deployment.command.js +115 -0
- package/dist/modules/jenkins/commands/create-deployment.command.js.map +1 -0
- package/dist/modules/jenkins/index.d.ts +3 -0
- package/dist/modules/jenkins/index.d.ts.map +1 -0
- package/dist/modules/jenkins/index.js +28 -0
- package/dist/modules/jenkins/index.js.map +1 -0
- package/dist/modules/mobile/commands/build-mobile.command.d.ts.map +1 -1
- package/dist/modules/mobile/commands/build-mobile.command.js +4 -22
- package/dist/modules/mobile/commands/build-mobile.command.js.map +1 -1
- package/dist/modules/mobile/commands/configure-mobile.command.d.ts +1 -1
- package/dist/modules/mobile/commands/configure-mobile.command.d.ts.map +1 -1
- package/dist/modules/mobile/commands/configure-mobile.command.js +11 -9
- package/dist/modules/mobile/commands/configure-mobile.command.js.map +1 -1
- package/dist/modules/mobile/services/jenkins-mobile.service.d.ts +2 -2
- package/dist/modules/mobile/services/jenkins-mobile.service.d.ts.map +1 -1
- package/dist/modules/mobile/services/jenkins-mobile.service.js +1 -2
- package/dist/modules/mobile/services/jenkins-mobile.service.js.map +1 -1
- package/dist/modules/mobile/services/project.service.d.ts +2 -2
- package/dist/modules/mobile/services/project.service.d.ts.map +1 -1
- package/dist/modules/prebuild/commands/prebuild.command.d.ts +13 -0
- package/dist/modules/prebuild/commands/prebuild.command.d.ts.map +1 -0
- package/dist/modules/prebuild/commands/prebuild.command.js +507 -0
- package/dist/modules/prebuild/commands/prebuild.command.js.map +1 -0
- package/dist/modules/prebuild/index.d.ts +3 -0
- package/dist/modules/prebuild/index.d.ts.map +1 -0
- package/dist/modules/prebuild/index.js +19 -0
- package/dist/modules/prebuild/index.js.map +1 -0
- package/dist/modules/proxy/commands/configure-proxy.command.d.ts +2 -0
- package/dist/modules/proxy/commands/configure-proxy.command.d.ts.map +1 -0
- package/dist/modules/proxy/commands/configure-proxy.command.js +7 -0
- package/dist/modules/proxy/commands/configure-proxy.command.js.map +1 -0
- package/dist/modules/proxy/commands/npm-user.command.d.ts +28 -0
- package/dist/modules/proxy/commands/npm-user.command.d.ts.map +1 -0
- package/dist/modules/proxy/commands/npm-user.command.js +77 -0
- package/dist/modules/proxy/commands/npm-user.command.js.map +1 -0
- package/dist/modules/proxy/commands/proxy.command.d.ts +22 -0
- package/dist/modules/proxy/commands/proxy.command.d.ts.map +1 -0
- package/dist/modules/proxy/commands/proxy.command.js +173 -0
- package/dist/modules/proxy/commands/proxy.command.js.map +1 -0
- package/dist/modules/proxy/config/npm-config.d.ts +17 -0
- package/dist/modules/proxy/config/npm-config.d.ts.map +1 -0
- package/dist/modules/proxy/config/npm-config.js +50 -0
- package/dist/modules/proxy/config/npm-config.js.map +1 -0
- package/dist/modules/proxy/index.d.ts +3 -0
- package/dist/modules/proxy/index.d.ts.map +1 -0
- package/dist/modules/proxy/index.js +21 -0
- package/dist/modules/proxy/index.js.map +1 -0
- package/dist/modules/proxy/services/npm-api.service.d.ts +76 -0
- package/dist/modules/proxy/services/npm-api.service.d.ts.map +1 -0
- package/dist/modules/proxy/services/npm-api.service.js +82 -0
- package/dist/modules/proxy/services/npm-api.service.js.map +1 -0
- package/dist/modules/scaffold/commands/init.command.d.ts +6 -0
- package/dist/modules/scaffold/commands/init.command.d.ts.map +1 -0
- package/dist/modules/scaffold/commands/init.command.js +193 -0
- package/dist/modules/scaffold/commands/init.command.js.map +1 -0
- package/dist/modules/scaffold/config/project-metadata.d.ts +9 -0
- package/dist/modules/scaffold/config/project-metadata.d.ts.map +1 -0
- package/dist/modules/scaffold/config/project-metadata.js +75 -0
- package/dist/modules/scaffold/config/project-metadata.js.map +1 -0
- package/dist/modules/scaffold/index.d.ts +3 -0
- package/dist/modules/scaffold/index.d.ts.map +1 -0
- package/dist/modules/scaffold/index.js +7 -0
- package/dist/modules/scaffold/index.js.map +1 -0
- package/dist/modules/scaffold/services/docker-template.service.d.ts +3 -0
- package/dist/modules/scaffold/services/docker-template.service.d.ts.map +1 -0
- package/dist/modules/scaffold/services/docker-template.service.js +131 -0
- package/dist/modules/scaffold/services/docker-template.service.js.map +1 -0
- package/dist/modules/scaffold/services/filesystem.service.d.ts +7 -0
- package/dist/modules/scaffold/services/filesystem.service.d.ts.map +1 -0
- package/dist/modules/scaffold/services/filesystem.service.js +97 -0
- package/dist/modules/scaffold/services/filesystem.service.js.map +1 -0
- package/dist/modules/scaffold/services/project-template.service.d.ts +4 -0
- package/dist/modules/scaffold/services/project-template.service.d.ts.map +1 -0
- package/dist/modules/scaffold/services/project-template.service.js +82 -0
- package/dist/modules/scaffold/services/project-template.service.js.map +1 -0
- package/dist/modules/scaffold/types.d.ts +65 -0
- package/dist/modules/scaffold/types.d.ts.map +1 -0
- package/dist/modules/scaffold/types.js +3 -0
- package/dist/modules/scaffold/types.js.map +1 -0
- package/dist/modules/users/commands/user.command.d.ts +22 -0
- package/dist/modules/users/commands/user.command.d.ts.map +1 -0
- package/dist/modules/users/commands/user.command.js +350 -0
- package/dist/modules/users/commands/user.command.js.map +1 -0
- package/dist/modules/users/index.d.ts +3 -0
- package/dist/modules/users/index.d.ts.map +1 -0
- package/dist/modules/users/index.js +34 -0
- package/dist/modules/users/index.js.map +1 -0
- package/dist/modules/users/providers/aws-user.provider.d.ts +11 -0
- package/dist/modules/users/providers/aws-user.provider.d.ts.map +1 -0
- package/dist/modules/users/providers/aws-user.provider.js +129 -0
- package/dist/modules/users/providers/aws-user.provider.js.map +1 -0
- package/dist/modules/users/providers/jenkins-user.provider.d.ts +6 -0
- package/dist/modules/users/providers/jenkins-user.provider.d.ts.map +1 -0
- package/dist/modules/users/providers/jenkins-user.provider.js +97 -0
- package/dist/modules/users/providers/jenkins-user.provider.js.map +1 -0
- package/dist/modules/users/providers/npm-user.provider.d.ts +4 -0
- package/dist/modules/users/providers/npm-user.provider.d.ts.map +1 -0
- package/dist/modules/users/providers/npm-user.provider.js +47 -0
- package/dist/modules/users/providers/npm-user.provider.js.map +1 -0
- package/dist/shared/config/config-files.d.ts.map +1 -1
- package/dist/shared/config/config-files.js +14 -10
- package/dist/shared/config/config-files.js.map +1 -1
- package/dist/shared/github/github-api.service.d.ts.map +1 -1
- package/dist/shared/github/github-api.service.js +25 -37
- package/dist/shared/github/github-api.service.js.map +1 -1
- package/dist/shared/jenkins/jenkins.service.d.ts +2 -0
- package/dist/shared/jenkins/jenkins.service.d.ts.map +1 -1
- package/dist/shared/jenkins/jenkins.service.js +30 -1
- package/dist/shared/jenkins/jenkins.service.js.map +1 -1
- package/dist/shared/listing.d.ts +9 -0
- package/dist/shared/listing.d.ts.map +1 -0
- package/dist/shared/listing.js +29 -0
- package/dist/shared/listing.js.map +1 -0
- package/docs/ARCHITECTURE.md +29 -0
- package/docs/CREATE-DEPLOYMENT-reference.groovy +1105 -0
- package/package.json +76 -59
- package/templates/jenkins/CREATE-DEPLOYMENT.groovy +1105 -0
- package/templates/jenkins/Jenkinsfile-Mobile-App +759 -759
|
@@ -7,141 +7,99 @@ exports.build = void 0;
|
|
|
7
7
|
const inquirer_1 = __importDefault(require("inquirer"));
|
|
8
8
|
const chalk_1 = __importDefault(require("chalk"));
|
|
9
9
|
const node_fs_1 = require("node:fs");
|
|
10
|
-
const
|
|
11
|
-
const jenkins_config_1 = require("../../../shared/config/jenkins-config");
|
|
10
|
+
const node_path_1 = require("node:path");
|
|
12
11
|
const docker_service_1 = require("../services/docker.service");
|
|
13
|
-
const
|
|
12
|
+
const project_cloud_service_1 = require("../../cloud/services/project-cloud.service");
|
|
13
|
+
const cloud_ghcr_service_1 = require("../../cloud/services/cloud-ghcr.service");
|
|
14
|
+
const cloud_jenkins_service_1 = require("../../cloud/services/cloud-jenkins.service");
|
|
15
|
+
const project_metadata_1 = require("../../scaffold/config/project-metadata");
|
|
16
|
+
const prebuild_command_1 = require("../../prebuild/commands/prebuild.command");
|
|
14
17
|
const TAG_PATTERN = /^[A-Za-z0-9_][A-Za-z0-9_.-]{0,127}$/;
|
|
15
|
-
const
|
|
16
|
-
const
|
|
17
|
-
|
|
18
|
-
const
|
|
19
|
-
|
|
20
|
-
|
|
18
|
+
const keyFor = (component) => component.path === '.' ? 'app' : component.path.toLowerCase().replace(/[^a-z0-9._-]+/g, '-');
|
|
19
|
+
const toComponent = (m) => ({ name: m.name, kind: m.kind === 'frontend' ? 'frontend' : 'backend', path: '.', framework: m.framework, appPort: m.appPort, containerPort: m.containerPort, healthEndpoint: m.healthEndpoint, imageName: m.imageName, ...(m.buildOutput ? { buildOutput: m.buildOutput } : {}) });
|
|
20
|
+
const chooseComponent = async (metadata) => {
|
|
21
|
+
const components = metadata.kind === 'fullstack' ? (metadata.components || []) : [toComponent(metadata)];
|
|
22
|
+
if (!components.length)
|
|
23
|
+
throw new Error('Cloud project has no deployable web components.');
|
|
24
|
+
if (components.length === 1)
|
|
25
|
+
return components[0];
|
|
26
|
+
const root = (0, project_metadata_1.findProjectRoot)();
|
|
27
|
+
if (root) {
|
|
28
|
+
const cwd = (0, node_path_1.resolve)(process.cwd());
|
|
29
|
+
const match = components.find((c) => (0, node_path_1.resolve)(root, c.path) === cwd);
|
|
30
|
+
if (match)
|
|
31
|
+
return match;
|
|
32
|
+
}
|
|
33
|
+
const value = (await inquirer_1.default.prompt([{ type: 'list', name: 'path', message: 'Which component do you want to deploy?', choices: components.map((c) => ({ name: `${c.name} (${c.path})`, value: c.path })) }])).path;
|
|
34
|
+
return components.find((c) => c.path === value);
|
|
21
35
|
};
|
|
22
|
-
const
|
|
23
|
-
const
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
if (
|
|
27
|
-
|
|
28
|
-
|
|
36
|
+
const ensureResources = async (component, env) => {
|
|
37
|
+
const key = keyFor(component);
|
|
38
|
+
let ghcr = await (0, project_cloud_service_1.getProjectResource)(`ghcr-${key}`, env);
|
|
39
|
+
let jenkins = await (0, project_cloud_service_1.getProjectResource)(`jenkins-${key}`, env);
|
|
40
|
+
if (ghcr && jenkins)
|
|
41
|
+
return { ghcr, jenkins };
|
|
42
|
+
console.log(chalk_1.default.yellow(`⚠ ${component.name} is missing ${!ghcr && !jenkins ? 'GHCR and Jenkins' : !ghcr ? 'GHCR' : 'Jenkins'} project association(s).`));
|
|
43
|
+
const answer = await inquirer_1.default.prompt([{ type: 'confirm', name: 'configure', message: 'Would you like to run prebuild and configure the missing infrastructure now?', default: true }]);
|
|
44
|
+
if (!answer.configure)
|
|
45
|
+
return null;
|
|
46
|
+
await (0, prebuild_command_1.prebuild)({ env });
|
|
47
|
+
ghcr = await (0, project_cloud_service_1.getProjectResource)(`ghcr-${key}`, env);
|
|
48
|
+
jenkins = await (0, project_cloud_service_1.getProjectResource)(`jenkins-${key}`, env);
|
|
49
|
+
if (!ghcr || !jenkins) {
|
|
50
|
+
console.log(chalk_1.default.yellow('⚠ Deployment was not started because required project infrastructure is still incomplete.'));
|
|
51
|
+
return null;
|
|
52
|
+
}
|
|
53
|
+
return { ghcr, jenkins };
|
|
29
54
|
};
|
|
30
55
|
const build = async (options) => {
|
|
31
|
-
const
|
|
56
|
+
const env = options.env.trim().toLowerCase();
|
|
57
|
+
const jenkinsStage = /(^|[-_.])(prod|production)([-_.]|$)/i.test(env) ? 'prod' : 'dev';
|
|
32
58
|
console.log(chalk_1.default.blue.bold(`🚀 Deploying ${env.toUpperCase()} environment...\n`));
|
|
33
|
-
const
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
const imageName = getGhcrImageName(config, environmentConfig.imageName);
|
|
38
|
-
const jenkinsJobName = getDockerJenkinsJobName(environmentConfig.imageName);
|
|
39
|
-
if (!environmentConfig.imageName.trim()) {
|
|
40
|
-
throw new Error(`Docker ${env.toUpperCase()} image name is not configured. Run \`indraq configure\` → Docker / GHCR.`);
|
|
41
|
-
}
|
|
42
|
-
if (!config.github.owner.trim()) {
|
|
43
|
-
throw new Error('GitHub / GHCR destination is not configured. Run `indraq configure` → Docker / GHCR → GitHub / GHCR destination.');
|
|
59
|
+
const metadata = await (0, project_cloud_service_1.getCloudProjectMetadata)();
|
|
60
|
+
if (metadata.kind === 'mobile') {
|
|
61
|
+
console.log(chalk_1.default.yellow('⚠ Web deployment is not available for mobile projects.'));
|
|
62
|
+
return;
|
|
44
63
|
}
|
|
45
|
-
const
|
|
46
|
-
const
|
|
47
|
-
if (!
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
64
|
+
const component = await chooseComponent(metadata);
|
|
65
|
+
const resources = await ensureResources(component, env);
|
|
66
|
+
if (!resources)
|
|
67
|
+
return;
|
|
68
|
+
const imageName = resources.ghcr.config.fullImage;
|
|
69
|
+
const jobName = resources.jenkins.config.jobName;
|
|
70
|
+
const root = (0, project_metadata_1.findProjectRoot)();
|
|
71
|
+
if (!root)
|
|
72
|
+
throw new Error('Project root could not be resolved.');
|
|
73
|
+
const componentRoot = (0, node_path_1.resolve)(root, component.path);
|
|
74
|
+
const dockerfilePath = 'Dockerfile';
|
|
75
|
+
if (!(0, node_fs_1.existsSync)((0, node_path_1.resolve)(componentRoot, dockerfilePath))) {
|
|
76
|
+
console.log(chalk_1.default.yellow(`⚠ Dockerfile is missing at ${(0, node_path_1.resolve)(componentRoot, dockerfilePath)}.`));
|
|
77
|
+
return;
|
|
52
78
|
}
|
|
53
79
|
(0, docker_service_1.assertDockerAvailable)();
|
|
54
|
-
(0,
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
}
|
|
58
|
-
if (!(0, node_fs_1.existsSync)((0, jenkins_service_1.getJenkinsCliJarPath)(jenkins.serverId))) {
|
|
59
|
-
throw new Error('Jenkins CLI JAR is missing. Run `indraq configure` again.');
|
|
60
|
-
}
|
|
61
|
-
if (!(0, node_fs_1.existsSync)((0, jenkins_service_1.getJenkinsAuthFilePath)(jenkins.serverId))) {
|
|
62
|
-
throw new Error('Jenkins credentials are missing. Run `indraq configure` again.');
|
|
63
|
-
}
|
|
64
|
-
console.log(chalk_1.default.blue.bold('🔎 Preflight Checks\n'));
|
|
65
|
-
console.log(chalk_1.default.green('✓ Docker available'));
|
|
66
|
-
console.log(chalk_1.default.green("✓ GHCR authentication will use Docker's existing credential store"));
|
|
67
|
-
console.log(chalk_1.default.gray(' IndraQ will not run `docker login` or replace your working GHCR credentials.'));
|
|
68
|
-
console.log(chalk_1.default.gray(`✓ Registry owner: ${config.github.owner} (${config.github.ownerType === 'personal' ? 'personal account' : 'organization'})`));
|
|
69
|
-
const authResult = (0, jenkins_service_1.validateJenkinsAuthentication)(jenkins);
|
|
70
|
-
if (authResult.connectionMode !== jenkins.connectionMode) {
|
|
71
|
-
jenkinsConnections.environments[env] = { url: jenkins.url, connectionMode: authResult.connectionMode };
|
|
72
|
-
jenkins.connectionMode = authResult.connectionMode;
|
|
73
|
-
(0, jenkins_config_1.saveJenkinsConnectionsConfig)(jenkinsConnections);
|
|
74
|
-
}
|
|
75
|
-
console.log(chalk_1.default.green(`✓ Jenkins authenticated: ${jenkins.url}`));
|
|
76
|
-
await (0, jenkins_service_1.assertJenkinsJobExists)(jenkins, jenkinsJobName);
|
|
77
|
-
console.log(chalk_1.default.green(`✓ Jenkins pipeline/job found: ${jenkinsJobName}\n`));
|
|
78
|
-
console.log(chalk_1.default.blue.bold('🏷️ Step 1: Specify Image Tags\n'));
|
|
79
|
-
const { tags: rawTags } = await inquirer_1.default.prompt([
|
|
80
|
-
{
|
|
81
|
-
type: 'input',
|
|
82
|
-
name: 'tags',
|
|
83
|
-
message: 'Enter image tags (comma-separated for multiple tags):',
|
|
84
|
-
default: env === 'dev' ? 'latest' : '1.0.0',
|
|
85
|
-
validate: (input) => {
|
|
86
|
-
const tags = input
|
|
87
|
-
.split(',')
|
|
88
|
-
.map((tag) => tag.trim())
|
|
89
|
-
.filter(Boolean);
|
|
90
|
-
if (tags.length === 0) {
|
|
91
|
-
return 'At least one tag is required.';
|
|
92
|
-
}
|
|
93
|
-
const invalidTag = tags.find((tag) => !TAG_PATTERN.test(tag));
|
|
94
|
-
return invalidTag ? `Invalid Docker tag: ${invalidTag}` : true;
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
]);
|
|
98
|
-
const tags = Array.from(new Set(rawTags
|
|
99
|
-
.split(',')
|
|
100
|
-
.map((tag) => tag.trim())
|
|
101
|
-
.filter(Boolean)));
|
|
80
|
+
const { tags: rawTags } = await inquirer_1.default.prompt([{ type: 'input', name: 'tags', message: 'Enter image tags (comma-separated):', default: jenkinsStage === 'dev' ? 'latest' : '1.0.0', validate: (input) => { const tags = input.split(',').map((x) => x.trim()).filter(Boolean); if (!tags.length)
|
|
81
|
+
return 'At least one tag is required.'; const invalid = tags.find((tag) => !TAG_PATTERN.test(tag)); return invalid ? `Invalid Docker tag: ${invalid}` : true; } }]);
|
|
82
|
+
const tags = [...new Set(rawTags.split(',').map((x) => x.trim()).filter(Boolean))];
|
|
102
83
|
const primaryTag = tags[0];
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
console.log(chalk_1.default.green('\n✓ Image pushed successfully to GHCR\n'));
|
|
122
|
-
const primaryImage = `${imageName}:${primaryTag}`;
|
|
123
|
-
const digest = (0, docker_service_1.getDockerImageDigest)(primaryImage);
|
|
124
|
-
console.log(chalk_1.default.blue.bold('⚡ Step 5: Running Jenkins Pipeline\n'));
|
|
125
|
-
console.log(chalk_1.default.gray(`Jenkins: ${jenkins.url}`));
|
|
126
|
-
console.log(chalk_1.default.gray(`Pipeline/job: ${jenkinsJobName}`));
|
|
127
|
-
console.log(chalk_1.default.gray('Live Jenkins console output starts below.\n'));
|
|
128
|
-
await (0, jenkins_service_1.triggerJenkinsDeployment)(jenkins, jenkinsJobName, {
|
|
129
|
-
ACTION: 'DEPLOY',
|
|
130
|
-
IMAGE_TAG: primaryTag,
|
|
131
|
-
...(digest ? { IMAGE_DIGEST: digest } : {}),
|
|
132
|
-
DEPLOYMENT_SOURCE: 'INDRAQ_CLI'
|
|
84
|
+
await (0, cloud_ghcr_service_1.withTemporaryGhcrLogin)(`Build and push ${component.name}`, async (dockerEnv) => {
|
|
85
|
+
console.log(chalk_1.default.blue.bold('\n🔨 Building Docker image\n'));
|
|
86
|
+
console.log(chalk_1.default.gray(`Component: ${component.name}`));
|
|
87
|
+
console.log(chalk_1.default.gray(`Image: ${imageName}`));
|
|
88
|
+
console.log(chalk_1.default.gray(`Tags: ${tags.join(', ')}`));
|
|
89
|
+
(0, docker_service_1.buildDockerImage)(imageName, tags, dockerfilePath, { env: dockerEnv, cwd: componentRoot });
|
|
90
|
+
console.log(chalk_1.default.green('✓ Docker image built.'));
|
|
91
|
+
console.log(chalk_1.default.blue.bold('\n📤 Pushing to GHCR with cloud-managed login\n'));
|
|
92
|
+
for (const tag of tags)
|
|
93
|
+
(0, docker_service_1.pushDockerImage)(`${imageName}:${tag}`, dockerEnv);
|
|
94
|
+
console.log(chalk_1.default.green('✓ Images pushed to GHCR.'));
|
|
95
|
+
const digest = (0, docker_service_1.getDockerImageDigest)(`${imageName}:${primaryTag}`, dockerEnv);
|
|
96
|
+
const jenkins = await (0, cloud_jenkins_service_1.getCloudJenkins)(jenkinsStage, `Deploy ${component.name} from CLI`);
|
|
97
|
+
console.log(chalk_1.default.blue.bold('\n⚡ Running Jenkins deployment\n'));
|
|
98
|
+
await (0, cloud_jenkins_service_1.triggerCloudJenkinsBuild)(jenkins, jobName, {
|
|
99
|
+
ACTION: 'DEPLOY', IMAGE_TAG: primaryTag, ...(digest ? { IMAGE_DIGEST: digest } : {}), DEPLOYMENT_SOURCE: 'INDRAQ_CLI'
|
|
100
|
+
}, true);
|
|
101
|
+
console.log(chalk_1.default.green.bold('\n🎉 Build, GHCR push, and Jenkins deployment completed successfully!\n'));
|
|
133
102
|
});
|
|
134
|
-
console.log(chalk_1.default.green.bold('\n🎉 Build, push, and Jenkins deployment completed successfully!\n'));
|
|
135
|
-
console.log(chalk_1.default.blue('📊 Summary:'));
|
|
136
|
-
console.log(chalk_1.default.gray(` Environment: ${env}`));
|
|
137
|
-
console.log(chalk_1.default.gray(` Owner: ${config.github.owner} (${config.github.ownerType})`));
|
|
138
|
-
console.log(chalk_1.default.gray(` Image: ${imageName}`));
|
|
139
|
-
console.log(chalk_1.default.gray(` Tags: ${tags.join(', ')}`));
|
|
140
|
-
console.log(chalk_1.default.gray(` Jenkins job: ${jenkinsJobName}`));
|
|
141
|
-
if (digest) {
|
|
142
|
-
console.log(chalk_1.default.gray(` Digest: ${digest}`));
|
|
143
|
-
}
|
|
144
|
-
console.log('');
|
|
145
103
|
};
|
|
146
104
|
exports.build = build;
|
|
147
105
|
//# sourceMappingURL=build.command.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build.command.js","sourceRoot":"","sources":["../../../../src/modules/deploy/commands/build.command.ts"],"names":[],"mappings":";;;;;;AAAA,wDAAgC;AAChC,kDAA0B;AAC1B,qCAAqC;AACrC,
|
|
1
|
+
{"version":3,"file":"build.command.js","sourceRoot":"","sources":["../../../../src/modules/deploy/commands/build.command.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/modules/deploy/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/modules/deploy/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,eAAO,MAAM,oBAAoB,GAAI,SAAS,OAAO,KAAG,IAWvD,CAAC"}
|
|
@@ -1,40 +1,20 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.registerDeployModule = void 0;
|
|
4
|
-
const commander_1 = require("commander");
|
|
5
4
|
const build_command_1 = require("./commands/build.command");
|
|
6
5
|
const configure_command_1 = require("../configure/configure.command");
|
|
7
|
-
const
|
|
8
|
-
|
|
9
|
-
return 'dev';
|
|
10
|
-
if (value === 'prod' || value === 'production')
|
|
11
|
-
return 'prod';
|
|
12
|
-
throw new commander_1.InvalidArgumentError('Environment must be dev/development or prod/production.');
|
|
13
|
-
};
|
|
14
|
-
const runBuild = async (environment) => {
|
|
15
|
-
await (0, build_command_1.build)({ env: environment });
|
|
16
|
-
};
|
|
17
|
-
const addDeploymentShortcut = (program, name, description, environment) => {
|
|
18
|
-
program.command(name).description(description).action(async () => runBuild(environment));
|
|
19
|
-
};
|
|
6
|
+
const prebuild_command_1 = require("../prebuild/commands/prebuild.command");
|
|
7
|
+
const runBuild = async (environment) => { await (0, build_command_1.build)({ env: environment }); };
|
|
20
8
|
const registerDeployModule = (program) => {
|
|
21
|
-
const deploy = program
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
.action(async () => (0, configure_command_1.configure)());
|
|
28
|
-
deploy
|
|
29
|
-
.command('build')
|
|
30
|
-
.description('Build and push a configured Docker image.')
|
|
31
|
-
.requiredOption('-e, --env <environment>', 'Environment: dev/development or prod/production', parseEnvironment)
|
|
32
|
-
.action(async (options) => runBuild(options.env));
|
|
9
|
+
const deploy = program.command('deploy').description('Build Docker images, push them to the configured registry, and run Jenkins deployments.');
|
|
10
|
+
deploy.command('configure').description('Open the main IndraQ configuration home.').action(async () => (0, configure_command_1.configure)());
|
|
11
|
+
deploy.command('build').description('Build/push/deploy a configured image.').requiredOption('-e, --env <environment>', 'Shared environment name').action(async (options) => runBuild(options.env));
|
|
12
|
+
const deployment = program.command('deployment').description('Create or run web deployments.');
|
|
13
|
+
deployment.command('create').option('-e, --env <environment>', 'Shared environment name').option('-y, --yes').action(async (o) => (0, prebuild_command_1.prebuild)({ ...(o.env ? { env: o.env } : {}), ...(o.yes !== undefined ? { yes: o.yes } : {}) }));
|
|
14
|
+
deployment.command('run').requiredOption('-e, --env <environment>', 'Shared environment name').action(async (o) => runBuild(o.env));
|
|
33
15
|
program.command('deploy:configure').description('Alias for `indraq configure`.').action(async () => (0, configure_command_1.configure)());
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
addDeploymentShortcut(program, 'deploy:prod', 'Build, push, and deploy the production image.', 'prod');
|
|
37
|
-
addDeploymentShortcut(program, 'deploy:production', 'Alias for `indraq deploy:prod`.', 'prod');
|
|
16
|
+
program.command('deploy:dev').description('Deploy using the shared environment named dev/development.').action(async () => runBuild('dev'));
|
|
17
|
+
program.command('deploy:prod').description('Deploy using the shared environment named prod/production.').action(async () => runBuild('prod'));
|
|
38
18
|
};
|
|
39
19
|
exports.registerDeployModule = registerDeployModule;
|
|
40
20
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/modules/deploy/index.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/modules/deploy/index.ts"],"names":[],"mappings":";;;AACA,4DAAiD;AACjD,sEAA2D;AAC3D,4EAAiE;AAEjE,MAAM,QAAQ,GAAG,KAAK,EAAE,WAAmB,EAAiB,EAAE,GAAG,MAAM,IAAA,qBAAK,EAAC,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/F,MAAM,oBAAoB,GAAG,CAAC,OAAgB,EAAQ,EAAE;IAC7D,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,yFAAyF,CAAC,CAAC;IAChJ,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,WAAW,CAAC,0CAA0C,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,IAAA,6BAAS,GAAE,CAAC,CAAC;IACpH,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,uCAAuC,CAAC,CAAC,cAAc,CAAC,yBAAyB,EAAE,yBAAyB,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,OAAwB,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;IAEpN,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,WAAW,CAAC,gCAAgC,CAAC,CAAC;IAC/F,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,yBAAyB,EAAE,yBAAyB,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,CAAkC,EAAE,EAAE,CAAC,IAAA,2BAAQ,EAAC,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACnQ,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,yBAAyB,EAAE,yBAAyB,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,CAAkB,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACrJ,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,WAAW,CAAC,+BAA+B,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,IAAA,6BAAS,GAAE,CAAC,CAAC;IACjH,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,WAAW,CAAC,4DAA4D,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IAC5I,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,WAAW,CAAC,4DAA4D,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;AAChJ,CAAC,CAAC;AAXW,QAAA,oBAAoB,wBAW/B"}
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
export declare const assertDockerAvailable: () => void;
|
|
2
|
-
export declare const buildDockerImage: (imageName: string, tags: string[], dockerfilePath: string
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
export declare const buildDockerImage: (imageName: string, tags: string[], dockerfilePath: string, options?: {
|
|
3
|
+
env?: NodeJS.ProcessEnv;
|
|
4
|
+
cwd?: string;
|
|
5
|
+
}) => void;
|
|
6
|
+
export declare const pushDockerImage: (imageWithTag: string, env?: NodeJS.ProcessEnv) => void;
|
|
7
|
+
export declare const getDockerImageDigest: (imageWithTag: string, env?: NodeJS.ProcessEnv) => string;
|
|
5
8
|
//# sourceMappingURL=docker.service.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"docker.service.d.ts","sourceRoot":"","sources":["../../../../src/modules/deploy/services/docker.service.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,qBAAqB,QAAO,
|
|
1
|
+
{"version":3,"file":"docker.service.d.ts","sourceRoot":"","sources":["../../../../src/modules/deploy/services/docker.service.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,qBAAqB,QAAO,IAGxC,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAC3B,WAAW,MAAM,EACjB,MAAM,MAAM,EAAE,EACd,gBAAgB,MAAM,EACtB,UAAS;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAO,KACtD,IAMF,CAAC;AAEF,eAAO,MAAM,eAAe,GAAI,cAAc,MAAM,EAAE,MAAM,MAAM,CAAC,UAAU,KAAG,IAG/E,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAAI,cAAc,MAAM,EAAE,MAAM,MAAM,CAAC,UAAU,KAAG,MAQpF,CAAC"}
|
|
@@ -11,35 +11,32 @@ const assertDockerAvailable = () => {
|
|
|
11
11
|
}
|
|
12
12
|
};
|
|
13
13
|
exports.assertDockerAvailable = assertDockerAvailable;
|
|
14
|
-
const buildDockerImage = (imageName, tags, dockerfilePath) => {
|
|
14
|
+
const buildDockerImage = (imageName, tags, dockerfilePath, options = {}) => {
|
|
15
15
|
const buildArguments = ['build', '-f', dockerfilePath];
|
|
16
|
-
for (const tag of tags)
|
|
16
|
+
for (const tag of tags)
|
|
17
17
|
buildArguments.push('-t', `${imageName}:${tag}`);
|
|
18
|
-
}
|
|
19
18
|
buildArguments.push('.');
|
|
20
19
|
try {
|
|
21
|
-
(0, node_child_process_1.execFileSync)('docker', buildArguments, { stdio: 'inherit' });
|
|
20
|
+
(0, node_child_process_1.execFileSync)('docker', buildArguments, { stdio: 'inherit', ...(options.env ? { env: options.env } : {}), ...(options.cwd ? { cwd: options.cwd } : {}) });
|
|
22
21
|
}
|
|
23
22
|
catch {
|
|
24
23
|
throw new Error('Docker build failed. Check the Dockerfile and build output above.');
|
|
25
24
|
}
|
|
26
25
|
};
|
|
27
26
|
exports.buildDockerImage = buildDockerImage;
|
|
28
|
-
const pushDockerImage = (imageWithTag) => {
|
|
27
|
+
const pushDockerImage = (imageWithTag, env) => {
|
|
29
28
|
try {
|
|
30
|
-
(0, node_child_process_1.execFileSync)('docker', ['push', imageWithTag], { stdio: 'inherit' });
|
|
29
|
+
(0, node_child_process_1.execFileSync)('docker', ['push', imageWithTag], { stdio: 'inherit', ...(env ? { env } : {}) });
|
|
31
30
|
}
|
|
32
31
|
catch {
|
|
33
|
-
throw new Error(`Failed to push ${imageWithTag}
|
|
34
|
-
'If a manual `docker push` of the same image succeeds, report this as an IndraQ CLI bug. Otherwise verify the Docker GHCR credential has package write access.');
|
|
32
|
+
throw new Error(`Failed to push ${imageWithTag} to GHCR.`);
|
|
35
33
|
}
|
|
36
34
|
};
|
|
37
35
|
exports.pushDockerImage = pushDockerImage;
|
|
38
|
-
const getDockerImageDigest = (imageWithTag) => {
|
|
36
|
+
const getDockerImageDigest = (imageWithTag, env) => {
|
|
39
37
|
try {
|
|
40
38
|
const output = (0, node_child_process_1.execFileSync)('docker', ['image', 'inspect', '--format={{index .RepoDigests 0}}', imageWithTag], {
|
|
41
|
-
encoding: 'utf8',
|
|
42
|
-
stdio: ['ignore', 'pipe', 'pipe']
|
|
39
|
+
encoding: 'utf8', stdio: ['ignore', 'pipe', 'pipe'], ...(env ? { env } : {})
|
|
43
40
|
}).trim();
|
|
44
41
|
const separator = output.lastIndexOf('@');
|
|
45
42
|
return separator >= 0 ? output.slice(separator + 1) : '';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"docker.service.js","sourceRoot":"","sources":["../../../../src/modules/deploy/services/docker.service.ts"],"names":[],"mappings":";;;AAAA,2DAAkD;AAE3C,MAAM,qBAAqB,GAAG,GAAS,EAAE;IAC9C,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"docker.service.js","sourceRoot":"","sources":["../../../../src/modules/deploy/services/docker.service.ts"],"names":[],"mappings":";;;AAAA,2DAAkD;AAE3C,MAAM,qBAAqB,GAAG,GAAS,EAAE;IAC9C,IAAI,CAAC;QAAC,IAAA,iCAAY,EAAC,QAAQ,EAAE,CAAC,WAAW,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;IAAC,CAAC;IACjE,MAAM,CAAC;QAAC,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;IAAC,CAAC;AAC7E,CAAC,CAAC;AAHW,QAAA,qBAAqB,yBAGhC;AAEK,MAAM,gBAAgB,GAAG,CAC9B,SAAiB,EACjB,IAAc,EACd,cAAsB,EACtB,UAAqD,EAAE,EACjD,EAAE;IACR,MAAM,cAAc,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;IACvD,KAAK,MAAM,GAAG,IAAI,IAAI;QAAE,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,SAAS,IAAI,GAAG,EAAE,CAAC,CAAC;IACzE,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACzB,IAAI,CAAC;QAAC,IAAA,iCAAY,EAAC,QAAQ,EAAE,cAAc,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAAC,CAAC;IACjK,MAAM,CAAC;QAAC,MAAM,IAAI,KAAK,CAAC,mEAAmE,CAAC,CAAC;IAAC,CAAC;AACjG,CAAC,CAAC;AAXW,QAAA,gBAAgB,oBAW3B;AAEK,MAAM,eAAe,GAAG,CAAC,YAAoB,EAAE,GAAuB,EAAQ,EAAE;IACrF,IAAI,CAAC;QAAC,IAAA,iCAAY,EAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,YAAY,CAAC,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAAC,CAAC;IACtG,MAAM,CAAC;QAAC,MAAM,IAAI,KAAK,CAAC,kBAAkB,YAAY,WAAW,CAAC,CAAC;IAAC,CAAC;AACvE,CAAC,CAAC;AAHW,QAAA,eAAe,mBAG1B;AAEK,MAAM,oBAAoB,GAAG,CAAC,YAAoB,EAAE,GAAuB,EAAU,EAAE;IAC5F,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAA,iCAAY,EAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,mCAAmC,EAAE,YAAY,CAAC,EAAE;YAC7G,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC7E,CAAC,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,SAAS,GAAG,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QAC1C,OAAO,SAAS,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3D,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,EAAE,CAAC;IAAC,CAAC;AACxB,CAAC,CAAC;AARW,QAAA,oBAAoB,wBAQ/B"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { WebFramework } from '../../scaffold/types';
|
|
2
|
+
interface Options {
|
|
3
|
+
framework?: WebFramework;
|
|
4
|
+
nodeVersion?: string;
|
|
5
|
+
output?: string;
|
|
6
|
+
port?: string;
|
|
7
|
+
health?: string;
|
|
8
|
+
compose?: boolean;
|
|
9
|
+
force?: boolean;
|
|
10
|
+
}
|
|
11
|
+
export declare const createDockerfile: (options: Options) => Promise<void>;
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=create-dockerfile.command.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-dockerfile.command.d.ts","sourceRoot":"","sources":["../../../../src/modules/dockerfile/commands/create-dockerfile.command.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAIzD,UAAU,OAAO;IAAG,SAAS,CAAC,EAAE,YAAY,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAC;CAAE;AAE1J,eAAO,MAAM,gBAAgB,GAAU,SAAS,OAAO,KAAG,OAAO,CAAC,IAAI,CAIrE,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.createDockerfile = void 0;
|
|
7
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
8
|
+
const inquirer_1 = __importDefault(require("inquirer"));
|
|
9
|
+
const node_fs_1 = require("node:fs");
|
|
10
|
+
const node_path_1 = require("node:path");
|
|
11
|
+
const docker_template_service_1 = require("../../scaffold/services/docker-template.service");
|
|
12
|
+
const filesystem_service_1 = require("../../scaffold/services/filesystem.service");
|
|
13
|
+
const detect = () => { try {
|
|
14
|
+
const pkg = JSON.parse((0, node_fs_1.readFileSync)((0, node_path_1.join)(process.cwd(), 'package.json'), 'utf8'));
|
|
15
|
+
const all = { ...pkg.dependencies, ...pkg.devDependencies };
|
|
16
|
+
if (all.next)
|
|
17
|
+
return 'next';
|
|
18
|
+
if (all.vite)
|
|
19
|
+
return 'vite';
|
|
20
|
+
if (all['react-scripts'])
|
|
21
|
+
return 'react';
|
|
22
|
+
if (all.express)
|
|
23
|
+
return 'express';
|
|
24
|
+
}
|
|
25
|
+
catch { } if ((0, node_fs_1.existsSync)((0, node_path_1.join)(process.cwd(), 'index.html')))
|
|
26
|
+
return 'vanilla'; return undefined; };
|
|
27
|
+
const createDockerfile = async (options) => {
|
|
28
|
+
const defaults = detect();
|
|
29
|
+
const answer = await inquirer_1.default.prompt([{ type: 'list', name: 'framework', message: 'Project framework:', choices: ['vite', 'react', 'vanilla', 'next', 'express'], default: options.framework || defaults }, { type: 'input', name: 'nodeVersion', message: 'Node version:', default: options.nodeVersion || '22' }, { type: 'input', name: 'buildOutput', message: 'Build output:', default: options.output || ((options.framework || defaults) === 'react' ? 'build' : 'dist'), when: (a) => a.framework === 'vite' || a.framework === 'react' }, { type: 'number', name: 'port', message: 'Application port:', default: Number(options.port || ((options.framework || defaults) === 'next' ? 3000 : 3000)), when: (a) => a.framework === 'express' || a.framework === 'next' }, { type: 'input', name: 'health', message: 'Health endpoint:', default: options.health || '/health', when: (a) => a.framework === 'express' }, { type: 'confirm', name: 'compose', message: 'Generate docker-compose.yml?', default: !!options.compose }, { type: 'confirm', name: 'overwrite', message: 'Docker files already exist. Replace only those generated files?', default: false, when: () => !options.force && ['Dockerfile', '.dockerignore', 'nginx.conf'].some((f) => (0, node_fs_1.existsSync)((0, node_path_1.join)(process.cwd(), f))) }]);
|
|
30
|
+
if (answer.overwrite === false && !options.force && ['Dockerfile', '.dockerignore', 'nginx.conf'].some((f) => (0, node_fs_1.existsSync)((0, node_path_1.join)(process.cwd(), f)))) {
|
|
31
|
+
console.log(chalk_1.default.yellow('Dockerfile generation cancelled.'));
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
const port = answer.port || 3000;
|
|
35
|
+
(0, filesystem_service_1.writeArtifacts)(process.cwd(), (0, docker_template_service_1.dockerArtifacts)({ framework: answer.framework, nodeVersion: answer.nodeVersion, appPort: port, ...(answer.buildOutput ? { buildOutput: answer.buildOutput } : {}), ...(answer.health ? { healthEndpoint: answer.health } : {}), compose: answer.compose }), true);
|
|
36
|
+
console.log(chalk_1.default.green('✓ Docker artifacts generated without modifying application source.'));
|
|
37
|
+
};
|
|
38
|
+
exports.createDockerfile = createDockerfile;
|
|
39
|
+
//# sourceMappingURL=create-dockerfile.command.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-dockerfile.command.js","sourceRoot":"","sources":["../../../../src/modules/dockerfile/commands/create-dockerfile.command.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/modules/dockerfile/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,eAAO,MAAM,wBAAwB,GAAI,SAAS,OAAO,KAAG,IAAmV,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.registerDockerfileModule = void 0;
|
|
4
|
+
const create_dockerfile_command_1 = require("./commands/create-dockerfile.command");
|
|
5
|
+
const registerDockerfileModule = (program) => { program.command('dockerfile').description('Generate Docker files for an existing project.').command('create').option('--framework <framework>').option('--node-version <version>').option('--output <directory>').option('--port <port>').option('--health <endpoint>').option('--compose').option('--force').action(create_dockerfile_command_1.createDockerfile); };
|
|
6
|
+
exports.registerDockerfileModule = registerDockerfileModule;
|
|
7
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/modules/dockerfile/index.ts"],"names":[],"mappings":";;;AAAqC,oFAAwE;AACtG,MAAM,wBAAwB,GAAG,CAAC,OAAgB,EAAQ,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,WAAW,CAAC,gDAAgD,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,yBAAyB,CAAC,CAAC,MAAM,CAAC,0BAA0B,CAAC,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,4CAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;AAAnY,QAAA,wBAAwB,4BAA2W"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { type ListCliOptions } from '../../../shared/listing';
|
|
2
|
+
interface JenkinsListOptions extends ListCliOptions {
|
|
3
|
+
stage?: string;
|
|
4
|
+
yes?: boolean;
|
|
5
|
+
password?: string;
|
|
6
|
+
roles?: string;
|
|
7
|
+
component?: string;
|
|
8
|
+
environment?: string;
|
|
9
|
+
imageName?: string;
|
|
10
|
+
hostPort?: string;
|
|
11
|
+
networks?: string;
|
|
12
|
+
volumes?: string;
|
|
13
|
+
flags?: string;
|
|
14
|
+
}
|
|
15
|
+
export declare const listJenkinsUsers: (options: JenkinsListOptions) => Promise<void>;
|
|
16
|
+
export declare const updateJenkinsUserInteractive: (username: string | undefined, options: JenkinsListOptions) => Promise<void>;
|
|
17
|
+
export declare const deleteJenkinsUserInteractive: (username: string | undefined, options: JenkinsListOptions) => Promise<void>;
|
|
18
|
+
export declare const listJenkinsDeployments: (options: JenkinsListOptions) => Promise<void>;
|
|
19
|
+
export declare const updateJenkinsDeployment: (jobName: string | undefined, options: JenkinsListOptions) => Promise<void>;
|
|
20
|
+
export declare const deleteJenkinsDeployment: (jobName: string | undefined, options: JenkinsListOptions) => Promise<void>;
|
|
21
|
+
export {};
|
|
22
|
+
//# sourceMappingURL=admin.command.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin.command.d.ts","sourceRoot":"","sources":["../../../../src/modules/jenkins/commands/admin.command.ts"],"names":[],"mappings":"AAKA,OAAO,EAAkB,KAAK,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAI9E,UAAU,kBAAmB,SAAQ,cAAc;IAAG,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CAAE;AA0C/P,eAAO,MAAM,gBAAgB,GAAU,SAAS,kBAAkB,KAAG,OAAO,CAAC,IAAI,CAKhF,CAAC;AAEF,eAAO,MAAM,4BAA4B,GAAU,UAAU,MAAM,GAAG,SAAS,EAAE,SAAS,kBAAkB,KAAG,OAAO,CAAC,IAAI,CAM1H,CAAC;AAEF,eAAO,MAAM,4BAA4B,GAAU,UAAU,MAAM,GAAG,SAAS,EAAE,SAAS,kBAAkB,KAAG,OAAO,CAAC,IAAI,CAM1H,CAAC;AAiBF,eAAO,MAAM,sBAAsB,GAAU,SAAS,kBAAkB,KAAG,OAAO,CAAC,IAAI,CAKtF,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAAU,SAAS,MAAM,GAAG,SAAS,EAAE,SAAS,kBAAkB,KAAG,OAAO,CAAC,IAAI,CAIpH,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAAU,SAAS,MAAM,GAAG,SAAS,EAAE,SAAS,kBAAkB,KAAG,OAAO,CAAC,IAAI,CAMpH,CAAC"}
|