indraq_cli 1.3.0 → 1.5.5
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/README.md +1082 -657
- package/dist/cli/create-program.d.ts.map +1 -1
- package/dist/cli/create-program.js +24 -6
- package/dist/cli/create-program.js.map +1 -1
- package/dist/cli/doctor.command.d.ts.map +1 -1
- package/dist/cli/doctor.command.js +23 -0
- package/dist/cli/doctor.command.js.map +1 -1
- package/dist/modules/configure/configure.command.d.ts.map +1 -0
- package/dist/modules/configure/configure.command.js +116 -0
- package/dist/modules/configure/configure.command.js.map +1 -0
- package/dist/modules/deploy/commands/build.command.d.ts +2 -2
- package/dist/modules/deploy/commands/build.command.d.ts.map +1 -1
- package/dist/modules/deploy/commands/build.command.js +45 -16
- package/dist/modules/deploy/commands/build.command.js.map +1 -1
- package/dist/modules/deploy/commands/configure-docker.command.d.ts +2 -0
- package/dist/modules/deploy/commands/configure-docker.command.d.ts.map +1 -0
- package/dist/modules/deploy/commands/configure-docker.command.js +169 -0
- package/dist/modules/deploy/commands/configure-docker.command.js.map +1 -0
- package/dist/modules/deploy/config/docker-config.d.ts +21 -0
- package/dist/modules/deploy/config/docker-config.d.ts.map +1 -0
- package/dist/modules/deploy/config/docker-config.js +187 -0
- package/dist/modules/deploy/config/docker-config.js.map +1 -0
- package/dist/modules/deploy/index.d.ts.map +1 -1
- package/dist/modules/deploy/index.js +9 -26
- package/dist/modules/deploy/index.js.map +1 -1
- package/dist/modules/mobile/commands/build-mobile.command.d.ts +11 -0
- package/dist/modules/mobile/commands/build-mobile.command.d.ts.map +1 -0
- package/dist/modules/mobile/commands/build-mobile.command.js +189 -0
- package/dist/modules/mobile/commands/build-mobile.command.js.map +1 -0
- package/dist/modules/mobile/commands/configure-mobile.command.d.ts +8 -0
- package/dist/modules/mobile/commands/configure-mobile.command.d.ts.map +1 -0
- package/dist/modules/mobile/commands/configure-mobile.command.js +353 -0
- package/dist/modules/mobile/commands/configure-mobile.command.js.map +1 -0
- package/dist/modules/mobile/config/mobile-config.d.ts +43 -0
- package/dist/modules/mobile/config/mobile-config.d.ts.map +1 -0
- package/dist/modules/mobile/config/mobile-config.js +211 -0
- package/dist/modules/mobile/config/mobile-config.js.map +1 -0
- package/dist/modules/mobile/index.d.ts +3 -0
- package/dist/modules/mobile/index.d.ts.map +1 -0
- package/dist/modules/mobile/index.js +50 -0
- package/dist/modules/mobile/index.js.map +1 -0
- package/dist/modules/mobile/services/jenkins-mobile.service.d.ts +31 -0
- package/dist/modules/mobile/services/jenkins-mobile.service.d.ts.map +1 -0
- package/dist/modules/mobile/services/jenkins-mobile.service.js +344 -0
- package/dist/modules/mobile/services/jenkins-mobile.service.js.map +1 -0
- package/dist/modules/mobile/services/project.service.d.ts +11 -0
- package/dist/modules/mobile/services/project.service.d.ts.map +1 -0
- package/dist/modules/mobile/services/project.service.js +73 -0
- package/dist/modules/mobile/services/project.service.js.map +1 -0
- package/dist/modules/mobile/services/source-bundle.service.d.ts +9 -0
- package/dist/modules/mobile/services/source-bundle.service.d.ts.map +1 -0
- package/dist/modules/mobile/services/source-bundle.service.js +114 -0
- package/dist/modules/mobile/services/source-bundle.service.js.map +1 -0
- package/dist/modules/mobile/services/version-sync.service.d.ts +7 -0
- package/dist/modules/mobile/services/version-sync.service.d.ts.map +1 -0
- package/dist/modules/mobile/services/version-sync.service.js +88 -0
- package/dist/modules/mobile/services/version-sync.service.js.map +1 -0
- package/dist/shared/config/config-files.d.ts +5 -0
- package/dist/shared/config/config-files.d.ts.map +1 -0
- package/dist/shared/config/config-files.js +88 -0
- package/dist/shared/config/config-files.js.map +1 -0
- package/dist/shared/config/jenkins-config.d.ts +36 -0
- package/dist/shared/config/jenkins-config.d.ts.map +1 -0
- package/dist/shared/config/jenkins-config.js +164 -0
- package/dist/shared/config/jenkins-config.js.map +1 -0
- package/dist/shared/jenkins/configure-jenkins.d.ts +7 -0
- package/dist/shared/jenkins/configure-jenkins.d.ts.map +1 -0
- package/dist/shared/jenkins/configure-jenkins.js +84 -0
- package/dist/shared/jenkins/configure-jenkins.js.map +1 -0
- package/dist/{modules/deploy/services → shared/jenkins}/jenkins.service.d.ts +5 -4
- package/dist/shared/jenkins/jenkins.service.d.ts.map +1 -0
- package/dist/{modules/deploy/services → shared/jenkins}/jenkins.service.js +43 -89
- package/dist/shared/jenkins/jenkins.service.js.map +1 -0
- package/dist/shared/runtime/runtime-doctor.js.map +1 -1
- package/package.json +10 -5
- package/templates/jenkins/Jenkinsfile-Mobile-App +759 -0
- package/dist/modules/deploy/commands/configure.command.d.ts.map +0 -1
- package/dist/modules/deploy/commands/configure.command.js +0 -404
- package/dist/modules/deploy/commands/configure.command.js.map +0 -1
- package/dist/modules/deploy/config/deployment-config.d.ts +0 -29
- package/dist/modules/deploy/config/deployment-config.d.ts.map +0 -1
- package/dist/modules/deploy/config/deployment-config.js +0 -164
- package/dist/modules/deploy/config/deployment-config.js.map +0 -1
- package/dist/modules/deploy/services/jenkins.service.d.ts.map +0 -1
- package/dist/modules/deploy/services/jenkins.service.js.map +0 -1
- /package/dist/modules/{deploy/commands → configure}/configure.command.d.ts +0 -0
|
@@ -0,0 +1,84 @@
|
|
|
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.promptForJenkinsConnection = 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 jenkins_service_1 = require("./jenkins.service");
|
|
11
|
+
const getExistingUsername = (binding) => {
|
|
12
|
+
if (!binding)
|
|
13
|
+
return '';
|
|
14
|
+
try {
|
|
15
|
+
return (0, jenkins_service_1.readJenkinsCredentials)(binding.serverId).username;
|
|
16
|
+
}
|
|
17
|
+
catch {
|
|
18
|
+
return '';
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
const promptForJenkinsConnection = async (currentEndpoint, currentBinding, label) => {
|
|
22
|
+
(0, jenkins_service_1.assertJavaAvailable)();
|
|
23
|
+
console.log(chalk_1.default.blue.bold(`\n⚙️ ${label}\n`));
|
|
24
|
+
console.log(chalk_1.default.gray('IndraQ downloads this controller\'s Jenkins CLI JAR and verifies the account before saving.'));
|
|
25
|
+
console.log(chalk_1.default.gray('Jenkins URL is project-shared. Username/token/password stay local to this computer and are never committed.\n'));
|
|
26
|
+
const { url } = await inquirer_1.default.prompt([{
|
|
27
|
+
type: 'input', name: 'url', message: 'Enter Jenkins URL/domain:',
|
|
28
|
+
default: currentEndpoint?.url ?? '',
|
|
29
|
+
filter: (input) => (0, jenkins_service_1.normalizeJenkinsUrl)(input),
|
|
30
|
+
validate: (input) => {
|
|
31
|
+
const value = (0, jenkins_service_1.normalizeJenkinsUrl)(input);
|
|
32
|
+
if (!value)
|
|
33
|
+
return 'Jenkins URL is required.';
|
|
34
|
+
try {
|
|
35
|
+
const parsed = new URL(value);
|
|
36
|
+
return parsed.protocol === 'http:' || parsed.protocol === 'https:' ? true : 'Use an http:// or https:// Jenkins URL.';
|
|
37
|
+
}
|
|
38
|
+
catch {
|
|
39
|
+
return 'Enter a valid Jenkins URL, for example https://jenkins.example.com';
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}]);
|
|
43
|
+
const { username } = await inquirer_1.default.prompt([{
|
|
44
|
+
type: 'input', name: 'username', message: 'Enter Jenkins username:',
|
|
45
|
+
default: getExistingUsername(currentBinding),
|
|
46
|
+
filter: (input) => input.trim(),
|
|
47
|
+
validate: (input) => input.trim() ? true : 'Jenkins username is required.'
|
|
48
|
+
}]);
|
|
49
|
+
const { secret } = await inquirer_1.default.prompt([{
|
|
50
|
+
type: 'password', name: 'secret', message: 'Enter Jenkins API token or password:', mask: '*',
|
|
51
|
+
validate: (input) => input ? true : 'Jenkins API token/password is required.'
|
|
52
|
+
}]);
|
|
53
|
+
const normalizedUrl = (0, jenkins_service_1.normalizeJenkinsUrl)(url);
|
|
54
|
+
const serverId = (0, jenkins_service_1.createJenkinsServerId)(normalizedUrl, username);
|
|
55
|
+
const authPath = (0, jenkins_service_1.getJenkinsAuthFilePath)(serverId);
|
|
56
|
+
const previousAuth = (0, node_fs_1.existsSync)(authPath) ? (0, node_fs_1.readFileSync)(authPath, 'utf8') : null;
|
|
57
|
+
console.log(chalk_1.default.gray('\nDownloading Jenkins CLI...'));
|
|
58
|
+
await (0, jenkins_service_1.downloadJenkinsCli)(normalizedUrl, serverId, username, secret);
|
|
59
|
+
(0, jenkins_service_1.saveJenkinsCredentials)(serverId, username, secret);
|
|
60
|
+
try {
|
|
61
|
+
console.log(chalk_1.default.gray('Validating Jenkins credentials...'));
|
|
62
|
+
const runtime = {
|
|
63
|
+
url: normalizedUrl,
|
|
64
|
+
serverId,
|
|
65
|
+
connectionMode: currentEndpoint?.connectionMode ?? 'webSocket'
|
|
66
|
+
};
|
|
67
|
+
const result = (0, jenkins_service_1.validateJenkinsAuthentication)(runtime);
|
|
68
|
+
console.log(chalk_1.default.green(`✓ Jenkins authenticated successfully as ${username}`));
|
|
69
|
+
console.log(chalk_1.default.gray(` CLI transport: ${result.connectionMode}`));
|
|
70
|
+
return {
|
|
71
|
+
endpoint: { url: normalizedUrl, connectionMode: result.connectionMode },
|
|
72
|
+
binding: { serverId }
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
catch (error) {
|
|
76
|
+
if (previousAuth !== null)
|
|
77
|
+
(0, node_fs_1.writeFileSync)(authPath, previousAuth, { encoding: 'utf8', mode: 0o600 });
|
|
78
|
+
else
|
|
79
|
+
(0, jenkins_service_1.deleteJenkinsCredentials)(serverId);
|
|
80
|
+
throw error;
|
|
81
|
+
}
|
|
82
|
+
};
|
|
83
|
+
exports.promptForJenkinsConnection = promptForJenkinsConnection;
|
|
84
|
+
//# sourceMappingURL=configure-jenkins.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"configure-jenkins.js","sourceRoot":"","sources":["../../../src/shared/jenkins/configure-jenkins.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { JenkinsResolvedConfig, JenkinsConnectionMode } from '../config/jenkins-config';
|
|
2
2
|
interface JenkinsCredentials {
|
|
3
3
|
username: string;
|
|
4
4
|
secret: string;
|
|
@@ -16,8 +16,9 @@ export declare const saveJenkinsCredentials: (serverId: string, username: string
|
|
|
16
16
|
export declare const deleteJenkinsCredentials: (serverId: string) => void;
|
|
17
17
|
export declare const readJenkinsCredentials: (serverId: string) => JenkinsCredentials;
|
|
18
18
|
export declare const downloadJenkinsCli: (jenkinsUrl: string, serverId: string, username: string, secret: string) => Promise<string>;
|
|
19
|
-
export declare const validateJenkinsAuthentication: (config: Pick<
|
|
20
|
-
export declare const
|
|
21
|
-
export declare const
|
|
19
|
+
export declare const validateJenkinsAuthentication: (config: Pick<JenkinsResolvedConfig, "url" | "serverId">) => JenkinsWhoAmIResult;
|
|
20
|
+
export declare const getJenkinsJobBaseUrl: (jenkinsUrl: string, jobName: string) => string;
|
|
21
|
+
export declare const assertJenkinsJobExists: (config: JenkinsResolvedConfig, jobName: string, context?: string) => Promise<void>;
|
|
22
|
+
export declare const triggerJenkinsDeployment: (config: JenkinsResolvedConfig, jobName: string, parameters?: Record<string, string>) => Promise<void>;
|
|
22
23
|
export {};
|
|
23
24
|
//# sourceMappingURL=jenkins.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jenkins.service.d.ts","sourceRoot":"","sources":["../../../src/shared/jenkins/jenkins.service.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAE7F,UAAU,kBAAkB;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,mBAAmB;IAC3B,cAAc,EAAE,qBAAqB,CAAC;IACtC,MAAM,EAAE,MAAM,CAAC;CAChB;AAQD,eAAO,MAAM,mBAAmB,GAAI,OAAO,MAAM,KAAG,MAA2C,CAAC;AAEhG,eAAO,MAAM,qBAAqB,GAAI,YAAY,MAAM,EAAE,UAAU,MAAM,KAAG,MAI5D,CAAC;AAIlB,eAAO,MAAM,oBAAoB,GAAI,UAAU,MAAM,KAAG,MACF,CAAC;AAEvD,eAAO,MAAM,sBAAsB,GAAI,UAAU,MAAM,KAAG,MACP,CAAC;AAQpD,eAAO,MAAM,mBAAmB,QAAO,IAWtC,CAAC;AAEF,eAAO,MAAM,sBAAsB,GACjC,UAAU,MAAM,EAChB,UAAU,MAAM,EAChB,QAAQ,MAAM,KACb,MAgBF,CAAC;AAEF,eAAO,MAAM,wBAAwB,GAAI,UAAU,MAAM,KAAG,IAG3D,CAAC;AAEF,eAAO,MAAM,sBAAsB,GAAI,UAAU,MAAM,KAAG,kBAgBzD,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAC7B,YAAY,MAAM,EAClB,UAAU,MAAM,EAChB,UAAU,MAAM,EAChB,QAAQ,MAAM,KACb,OAAO,CAAC,MAAM,CAiChB,CAAC;AAmDF,eAAO,MAAM,6BAA6B,GACxC,QAAQ,IAAI,CAAC,qBAAqB,EAAE,KAAK,GAAG,UAAU,CAAC,KACtD,mBAoBF,CAAC;AAQF,eAAO,MAAM,oBAAoB,GAAI,YAAY,MAAM,EAAE,SAAS,MAAM,KAAG,MACd,CAAC;AAE9D,eAAO,MAAM,sBAAsB,GACjC,QAAQ,qBAAqB,EAC7B,SAAS,MAAM,EACf,gBAAwB,KACvB,OAAO,CAAC,IAAI,CAqBd,CAAC;AAEF,eAAO,MAAM,wBAAwB,GACnC,QAAQ,qBAAqB,EAC7B,SAAS,MAAM,EACf,aAAY,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,KACtC,OAAO,CAAC,IAAI,CA+Bd,CAAC"}
|
|
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.triggerJenkinsDeployment = exports.assertJenkinsJobExists = exports.validateJenkinsAuthentication = exports.downloadJenkinsCli = exports.readJenkinsCredentials = exports.deleteJenkinsCredentials = exports.saveJenkinsCredentials = exports.assertJavaAvailable = exports.getJenkinsAuthFilePath = exports.getJenkinsCliJarPath = exports.createJenkinsServerId = exports.normalizeJenkinsUrl = void 0;
|
|
6
|
+
exports.triggerJenkinsDeployment = exports.assertJenkinsJobExists = exports.getJenkinsJobBaseUrl = exports.validateJenkinsAuthentication = exports.downloadJenkinsCli = exports.readJenkinsCredentials = exports.deleteJenkinsCredentials = exports.saveJenkinsCredentials = exports.assertJavaAvailable = exports.getJenkinsAuthFilePath = exports.getJenkinsCliJarPath = exports.createJenkinsServerId = exports.normalizeJenkinsUrl = void 0;
|
|
7
7
|
const axios_1 = __importDefault(require("axios"));
|
|
8
8
|
const node_crypto_1 = require("node:crypto");
|
|
9
9
|
const node_fs_1 = require("node:fs");
|
|
@@ -37,7 +37,7 @@ const assertJavaAvailable = () => {
|
|
|
37
37
|
stdio: ['ignore', 'pipe', 'pipe']
|
|
38
38
|
});
|
|
39
39
|
if (result.error || result.status !== 0) {
|
|
40
|
-
throw new Error('Java is required for Jenkins CLI but was not found. Install
|
|
40
|
+
throw new Error('Java 21+ is required for Jenkins CLI but was not found. Install Java and make sure `java` is available in PATH. See the README prerequisites.');
|
|
41
41
|
}
|
|
42
42
|
};
|
|
43
43
|
exports.assertJavaAvailable = assertJavaAvailable;
|
|
@@ -52,23 +52,21 @@ const saveJenkinsCredentials = (serverId, username, secret) => {
|
|
|
52
52
|
(0, node_fs_1.chmodSync)(authPath, 0o600);
|
|
53
53
|
}
|
|
54
54
|
catch {
|
|
55
|
-
// Windows does not
|
|
56
|
-
// still outside the project and is never committed by the CLI.
|
|
55
|
+
// Windows does not apply POSIX file modes. The credential still lives outside the project.
|
|
57
56
|
}
|
|
58
57
|
return authPath;
|
|
59
58
|
};
|
|
60
59
|
exports.saveJenkinsCredentials = saveJenkinsCredentials;
|
|
61
60
|
const deleteJenkinsCredentials = (serverId) => {
|
|
62
61
|
const authPath = (0, exports.getJenkinsAuthFilePath)(serverId);
|
|
63
|
-
if ((0, node_fs_1.existsSync)(authPath))
|
|
62
|
+
if ((0, node_fs_1.existsSync)(authPath))
|
|
64
63
|
(0, node_fs_1.rmSync)(authPath, { force: true });
|
|
65
|
-
}
|
|
66
64
|
};
|
|
67
65
|
exports.deleteJenkinsCredentials = deleteJenkinsCredentials;
|
|
68
66
|
const readJenkinsCredentials = (serverId) => {
|
|
69
67
|
const authPath = (0, exports.getJenkinsAuthFilePath)(serverId);
|
|
70
68
|
if (!(0, node_fs_1.existsSync)(authPath)) {
|
|
71
|
-
throw new Error('Jenkins credentials are missing. Run `indraq configure` again.');
|
|
69
|
+
throw new Error('Jenkins credentials are missing. Run `indraq configure` and configure this Jenkins connection again.');
|
|
72
70
|
}
|
|
73
71
|
const raw = (0, node_fs_1.readFileSync)(authPath, 'utf8');
|
|
74
72
|
const separator = raw.indexOf(':');
|
|
@@ -91,15 +89,11 @@ const downloadJenkinsCli = async (jenkinsUrl, serverId, username, secret) => {
|
|
|
91
89
|
timeout: 30_000,
|
|
92
90
|
maxContentLength: 100 * 1024 * 1024,
|
|
93
91
|
maxBodyLength: 100 * 1024 * 1024,
|
|
94
|
-
auth: {
|
|
95
|
-
username,
|
|
96
|
-
password: secret
|
|
97
|
-
}
|
|
92
|
+
auth: { username, password: secret }
|
|
98
93
|
});
|
|
99
94
|
const data = Buffer.from(response.data);
|
|
100
|
-
if (data.length < 1024)
|
|
95
|
+
if (data.length < 1024)
|
|
101
96
|
throw new Error('Downloaded Jenkins CLI file is unexpectedly small.');
|
|
102
|
-
}
|
|
103
97
|
(0, node_fs_1.writeFileSync)(jarPath, data);
|
|
104
98
|
return jarPath;
|
|
105
99
|
}
|
|
@@ -120,29 +114,16 @@ const runJenkinsCliCapture = (config, connectionMode, commandArguments) => {
|
|
|
120
114
|
const jarPath = (0, exports.getJenkinsCliJarPath)(config.serverId);
|
|
121
115
|
const authPath = (0, exports.getJenkinsAuthFilePath)(config.serverId);
|
|
122
116
|
if (!(0, node_fs_1.existsSync)(jarPath)) {
|
|
123
|
-
return {
|
|
124
|
-
status: null,
|
|
125
|
-
stdout: '',
|
|
126
|
-
stderr: '',
|
|
127
|
-
error: new Error('Jenkins CLI JAR is missing. Run `indraq configure` again.')
|
|
128
|
-
};
|
|
117
|
+
return { status: null, stdout: '', stderr: '', error: new Error('Jenkins CLI JAR is missing. Run `indraq configure` again.') };
|
|
129
118
|
}
|
|
130
119
|
if (!(0, node_fs_1.existsSync)(authPath)) {
|
|
131
|
-
return {
|
|
132
|
-
status: null,
|
|
133
|
-
stdout: '',
|
|
134
|
-
stderr: '',
|
|
135
|
-
error: new Error('Jenkins credentials are missing. Run `indraq configure` again.')
|
|
136
|
-
};
|
|
120
|
+
return { status: null, stdout: '', stderr: '', error: new Error('Jenkins credentials are missing. Run `indraq configure` again.') };
|
|
137
121
|
}
|
|
138
122
|
const result = (0, node_child_process_1.spawnSync)('java', [
|
|
139
|
-
'-jar',
|
|
140
|
-
|
|
141
|
-
'-s',
|
|
142
|
-
(0, exports.normalizeJenkinsUrl)(config.url),
|
|
123
|
+
'-jar', jarPath,
|
|
124
|
+
'-s', (0, exports.normalizeJenkinsUrl)(config.url),
|
|
143
125
|
`-${connectionMode}`,
|
|
144
|
-
'-auth',
|
|
145
|
-
`@${authPath}`,
|
|
126
|
+
'-auth', `@${authPath}`,
|
|
146
127
|
...commandArguments
|
|
147
128
|
], {
|
|
148
129
|
encoding: 'utf8',
|
|
@@ -173,52 +154,40 @@ const validateJenkinsAuthentication = (config) => {
|
|
|
173
154
|
const result = runJenkinsCliCapture(config, mode, ['who-am-i']);
|
|
174
155
|
const output = `${result.stdout}\n${result.stderr}`.trim();
|
|
175
156
|
if (!result.error && result.status === 0 && !/Authenticated as:\s*anonymous/i.test(output)) {
|
|
176
|
-
return {
|
|
177
|
-
connectionMode: mode,
|
|
178
|
-
output: result.stdout.trim() || result.stderr.trim()
|
|
179
|
-
};
|
|
157
|
+
return { connectionMode: mode, output: result.stdout.trim() || result.stderr.trim() };
|
|
180
158
|
}
|
|
181
159
|
failures.push(`${mode}: ${result.error?.message || cleanCliError(result.stdout, result.stderr)}`);
|
|
182
160
|
}
|
|
183
161
|
throw new Error(`Jenkins authentication failed. Check the Jenkins URL, username, and API token/password.\n${failures.join('\n')}`);
|
|
184
162
|
};
|
|
185
163
|
exports.validateJenkinsAuthentication = validateJenkinsAuthentication;
|
|
186
|
-
const
|
|
187
|
-
const segments = jobName
|
|
188
|
-
|
|
189
|
-
.map((segment) => segment.trim())
|
|
190
|
-
.filter(Boolean);
|
|
191
|
-
if (segments.length === 0) {
|
|
164
|
+
const getJobPath = (jobName) => {
|
|
165
|
+
const segments = jobName.split('/').map((segment) => segment.trim()).filter(Boolean);
|
|
166
|
+
if (segments.length === 0)
|
|
192
167
|
throw new Error('Jenkins job name cannot be empty.');
|
|
193
|
-
}
|
|
194
|
-
const jobPath = segments.map((segment) => `job/${encodeURIComponent(segment)}`).join('/');
|
|
195
|
-
return `${(0, exports.normalizeJenkinsUrl)(jenkinsUrl)}/${jobPath}/api/json`;
|
|
168
|
+
return segments.map((segment) => `job/${encodeURIComponent(segment)}`).join('/');
|
|
196
169
|
};
|
|
197
|
-
const
|
|
170
|
+
const getJenkinsJobBaseUrl = (jenkinsUrl, jobName) => `${(0, exports.normalizeJenkinsUrl)(jenkinsUrl)}/${getJobPath(jobName)}`;
|
|
171
|
+
exports.getJenkinsJobBaseUrl = getJenkinsJobBaseUrl;
|
|
172
|
+
const assertJenkinsJobExists = async (config, jobName, context = 'pipeline/job') => {
|
|
198
173
|
const credentials = (0, exports.readJenkinsCredentials)(config.serverId);
|
|
199
|
-
const url =
|
|
174
|
+
const url = `${(0, exports.getJenkinsJobBaseUrl)(config.url, jobName)}/api/json`;
|
|
200
175
|
try {
|
|
201
176
|
await axios_1.default.get(url, {
|
|
202
177
|
timeout: 15_000,
|
|
203
178
|
params: { tree: 'name,fullName,_class' },
|
|
204
|
-
auth: {
|
|
205
|
-
username: credentials.username,
|
|
206
|
-
password: credentials.secret
|
|
207
|
-
}
|
|
179
|
+
auth: { username: credentials.username, password: credentials.secret }
|
|
208
180
|
});
|
|
209
181
|
}
|
|
210
182
|
catch (error) {
|
|
211
183
|
if (axios_1.default.isAxiosError(error)) {
|
|
212
184
|
const status = error.response?.status;
|
|
213
|
-
if (status === 404)
|
|
214
|
-
throw new Error(`No Jenkins
|
|
215
|
-
|
|
216
|
-
if (status === 401) {
|
|
185
|
+
if (status === 404)
|
|
186
|
+
throw new Error(`No Jenkins ${context} named "${jobName}" was found.`);
|
|
187
|
+
if (status === 401)
|
|
217
188
|
throw new Error('Jenkins credentials are no longer valid. Run `indraq configure` again.');
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
throw new Error(`Jenkins denied access to "${jobName}". The configured user needs permission to read and build this job.`);
|
|
221
|
-
}
|
|
189
|
+
if (status === 403)
|
|
190
|
+
throw new Error(`Jenkins denied access to "${jobName}". The user needs read/build permission.`);
|
|
222
191
|
throw new Error(`Unable to verify Jenkins job "${jobName}"${status ? ` (HTTP ${status})` : ''}. ${error.message}`);
|
|
223
192
|
}
|
|
224
193
|
const message = error instanceof Error ? error.message : 'Unknown Jenkins job lookup error';
|
|
@@ -226,46 +195,31 @@ const assertJenkinsJobExists = async (config, jobName) => {
|
|
|
226
195
|
}
|
|
227
196
|
};
|
|
228
197
|
exports.assertJenkinsJobExists = assertJenkinsJobExists;
|
|
229
|
-
const triggerJenkinsDeployment = async (config, jobName) => {
|
|
198
|
+
const triggerJenkinsDeployment = async (config, jobName, parameters = {}) => {
|
|
230
199
|
(0, exports.assertJavaAvailable)();
|
|
231
200
|
const jarPath = (0, exports.getJenkinsCliJarPath)(config.serverId);
|
|
232
201
|
const authPath = (0, exports.getJenkinsAuthFilePath)(config.serverId);
|
|
233
|
-
if (!(0, node_fs_1.existsSync)(jarPath))
|
|
202
|
+
if (!(0, node_fs_1.existsSync)(jarPath))
|
|
234
203
|
throw new Error('Jenkins CLI JAR is missing. Run `indraq configure` again.');
|
|
235
|
-
|
|
236
|
-
if (!(0, node_fs_1.existsSync)(authPath)) {
|
|
204
|
+
if (!(0, node_fs_1.existsSync)(authPath))
|
|
237
205
|
throw new Error('Jenkins credentials are missing. Run `indraq configure` again.');
|
|
238
|
-
}
|
|
206
|
+
const parameterArgs = Object.entries(parameters).flatMap(([key, value]) => ['-p', `${key}=${value}`]);
|
|
239
207
|
await new Promise((resolve, reject) => {
|
|
240
208
|
const child = (0, node_child_process_1.spawn)('java', [
|
|
241
|
-
'-jar',
|
|
242
|
-
|
|
243
|
-
'-s',
|
|
244
|
-
(0, exports.normalizeJenkinsUrl)(config.url),
|
|
209
|
+
'-jar', jarPath,
|
|
210
|
+
'-s', (0, exports.normalizeJenkinsUrl)(config.url),
|
|
245
211
|
`-${config.connectionMode}`,
|
|
246
|
-
'-auth',
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
windowsHide: false
|
|
255
|
-
});
|
|
256
|
-
child.once('error', (error) => {
|
|
257
|
-
reject(new Error(`Unable to start Jenkins CLI: ${error.message}`));
|
|
258
|
-
});
|
|
259
|
-
child.once('exit', (code, signal) => {
|
|
260
|
-
if (code === 0) {
|
|
212
|
+
'-auth', `@${authPath}`,
|
|
213
|
+
'build', jobName,
|
|
214
|
+
...parameterArgs,
|
|
215
|
+
'-s', '-v'
|
|
216
|
+
], { stdio: 'inherit' });
|
|
217
|
+
child.once('error', (error) => reject(new Error(`Unable to start Jenkins CLI: ${error.message}`)));
|
|
218
|
+
child.once('exit', (code) => {
|
|
219
|
+
if (code === 0)
|
|
261
220
|
resolve();
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
if (signal) {
|
|
265
|
-
reject(new Error(`Jenkins pipeline was interrupted by signal ${signal}.`));
|
|
266
|
-
return;
|
|
267
|
-
}
|
|
268
|
-
reject(new Error(`Jenkins pipeline "${jobName}" failed with exit code ${code ?? 'unknown'}. Review the Jenkins output above.`));
|
|
221
|
+
else
|
|
222
|
+
reject(new Error(`Jenkins pipeline "${jobName}" failed with exit code ${code ?? 'unknown'}. Review the Jenkins output above.`));
|
|
269
223
|
});
|
|
270
224
|
});
|
|
271
225
|
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jenkins.service.js","sourceRoot":"","sources":["../../../src/shared/jenkins/jenkins.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime-doctor.js","sourceRoot":"","sources":["../../../src/shared/runtime/runtime-doctor.ts"],"names":[],"mappings":";;;;;;AAAA,2DAAkD;AAClD,0DAA6B;AAS7B,MAAM,UAAU,GAAG,CAAC,KAAa,EAAU,EAAE,CAAC,mBAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;AAE3E,MAAM,cAAc,GAAG,CAAC,OAAe,EAAqB,EAAE;IACnE,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC;IACrE,IAAI,KAAK,GAAa,EAAE,CAAC;IACzB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAA,iCAAY,EAAC,OAAO,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC3G,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"runtime-doctor.js","sourceRoot":"","sources":["../../../src/shared/runtime/runtime-doctor.ts"],"names":[],"mappings":";;;;;;AAAA,2DAAkD;AAClD,0DAA6B;AAS7B,MAAM,UAAU,GAAG,CAAC,KAAa,EAAU,EAAE,CAAC,mBAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;AAE3E,MAAM,cAAc,GAAG,CAAC,OAAe,EAAqB,EAAE;IACnE,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC;IACrE,IAAI,KAAK,GAAa,EAAE,CAAC;IACzB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAA,iCAAY,EAAC,OAAO,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC3G,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACnF,CAAC;IAAC,MAAM,CAAC;QACP,KAAK,GAAG,EAAE,CAAC;IACb,CAAC;IAED,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO;QAChE,CAAC,CAAC,mBAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC;QACvC,CAAC,CAAC,SAAS,CAAC;IACd,MAAM,mBAAmB,GAAG,MAAM,CAAC,CAAC,CAAC,mBAAI,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACrF,MAAM,QAAQ,GAAG,OAAO,CACtB,OAAO,CAAC,QAAQ,KAAK,OAAO;QAC5B,MAAM;QACN,KAAK,CAAC,CAAC,CAAC;QACR,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,GAAG,mBAAI,CAAC,GAAG,EAAE,CAAC,CACrE,CAAC;IAEF,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAAE,mBAAmB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;AAC/F,CAAC,CAAC;AAtBW,QAAA,cAAc,kBAsBzB"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "indraq_cli",
|
|
3
|
-
"version": "1.
|
|
4
|
-
"description": "IndraQ CLI for Docker
|
|
3
|
+
"version": "1.5.5",
|
|
4
|
+
"description": "IndraQ CLI for Docker/GHCR deployments, Jenkins automation, and mobile Android builds",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"bin": {
|
|
7
7
|
"indraq": "dist/index.js"
|
|
@@ -21,7 +21,11 @@
|
|
|
21
21
|
"jenkins",
|
|
22
22
|
"deployment",
|
|
23
23
|
"devops",
|
|
24
|
-
"automation"
|
|
24
|
+
"automation",
|
|
25
|
+
"mobile",
|
|
26
|
+
"react-native",
|
|
27
|
+
"expo",
|
|
28
|
+
"android"
|
|
25
29
|
],
|
|
26
30
|
"author": "IndraQ Innovations",
|
|
27
31
|
"license": "MIT",
|
|
@@ -39,13 +43,14 @@
|
|
|
39
43
|
"typescript": "^5.9.3"
|
|
40
44
|
},
|
|
41
45
|
"engines": {
|
|
42
|
-
"node": ">=
|
|
46
|
+
"node": ">=22.0.0"
|
|
43
47
|
},
|
|
44
48
|
"files": [
|
|
45
49
|
"dist",
|
|
46
50
|
"README.md",
|
|
47
51
|
"LICENSE",
|
|
48
|
-
"docs/assets"
|
|
52
|
+
"docs/assets",
|
|
53
|
+
"templates/jenkins"
|
|
49
54
|
],
|
|
50
55
|
"publishConfig": {
|
|
51
56
|
"access": "public",
|