@soft-artel/ci 2.0.57 → 2.0.59

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.
Files changed (80) hide show
  1. package/.env +21 -0
  2. package/.eslintcache +1 -0
  3. package/.eslintignore +4 -0
  4. package/.eslintrc +246 -0
  5. package/.gitlab-ci.yml +12 -0
  6. package/README.md +33 -0
  7. package/_publish.sh +25 -0
  8. package/package.json +1 -1
  9. package/src/Project.ts +291 -0
  10. package/src/commands/incrementBuild.ts +46 -0
  11. package/src/commands/k8s-build.ts +447 -0
  12. package/src/commands/k8s-deploy.ts +215 -0
  13. package/src/commands/xcode.ts +192 -0
  14. package/src/services/Git.ts +203 -0
  15. package/src/services/Gitlab.ts +129 -0
  16. package/src/services/Jira.ts +228 -0
  17. package/src/services/Reporter.ts +238 -0
  18. package/src/utils/Exception.ts +19 -0
  19. package/src/utils/Logger.ts +85 -0
  20. package/src/utils/Shell.ts +120 -0
  21. package/src/utils/helpers.ts +118 -0
  22. package/src/utils/prototype.ts +313 -0
  23. package/test.ts +0 -0
  24. package/tsconfig.json +25 -0
  25. package/Project.d.ts +0 -57
  26. package/Project.d.ts.map +0 -1
  27. package/Project.js +0 -176
  28. package/Project.js.map +0 -1
  29. package/commands/incrementBuild.d.ts +0 -3
  30. package/commands/incrementBuild.d.ts.map +0 -1
  31. package/commands/incrementBuild.js +0 -34
  32. package/commands/incrementBuild.js.map +0 -1
  33. package/commands/k8s-build.d.ts +0 -28
  34. package/commands/k8s-build.d.ts.map +0 -1
  35. package/commands/k8s-build.js +0 -298
  36. package/commands/k8s-build.js.map +0 -1
  37. package/commands/k8s-deploy.d.ts +0 -11
  38. package/commands/k8s-deploy.d.ts.map +0 -1
  39. package/commands/k8s-deploy.js +0 -145
  40. package/commands/k8s-deploy.js.map +0 -1
  41. package/commands/xcode.d.ts +0 -3
  42. package/commands/xcode.d.ts.map +0 -1
  43. package/commands/xcode.js +0 -128
  44. package/commands/xcode.js.map +0 -1
  45. package/services/Git.d.ts +0 -46
  46. package/services/Git.d.ts.map +0 -1
  47. package/services/Git.js +0 -138
  48. package/services/Git.js.map +0 -1
  49. package/services/Gitlab.d.ts +0 -14
  50. package/services/Gitlab.d.ts.map +0 -1
  51. package/services/Gitlab.js +0 -101
  52. package/services/Gitlab.js.map +0 -1
  53. package/services/Jira.d.ts +0 -32
  54. package/services/Jira.d.ts.map +0 -1
  55. package/services/Jira.js +0 -136
  56. package/services/Jira.js.map +0 -1
  57. package/services/Reporter.d.ts +0 -43
  58. package/services/Reporter.d.ts.map +0 -1
  59. package/services/Reporter.js +0 -139
  60. package/services/Reporter.js.map +0 -1
  61. package/utils/Exception.d.ts +0 -5
  62. package/utils/Exception.d.ts.map +0 -1
  63. package/utils/Exception.js +0 -14
  64. package/utils/Exception.js.map +0 -1
  65. package/utils/Logger.d.ts +0 -11
  66. package/utils/Logger.d.ts.map +0 -1
  67. package/utils/Logger.js +0 -62
  68. package/utils/Logger.js.map +0 -1
  69. package/utils/Shell.d.ts +0 -39
  70. package/utils/Shell.d.ts.map +0 -1
  71. package/utils/Shell.js +0 -89
  72. package/utils/Shell.js.map +0 -1
  73. package/utils/helpers.d.ts +0 -15
  74. package/utils/helpers.d.ts.map +0 -1
  75. package/utils/helpers.js +0 -99
  76. package/utils/helpers.js.map +0 -1
  77. package/utils/prototype.d.ts +0 -9
  78. package/utils/prototype.d.ts.map +0 -1
  79. package/utils/prototype.js +0 -186
  80. package/utils/prototype.js.map +0 -1
package/commands/xcode.js DELETED
@@ -1,128 +0,0 @@
1
- #!/usr/bin/env node
2
- "use strict";
3
- var __importDefault = (this && this.__importDefault) || function (mod) {
4
- return (mod && mod.__esModule) ? mod : { "default": mod };
5
- };
6
- Object.defineProperty(exports, "__esModule", { value: true });
7
- const commander_1 = require("commander");
8
- const Shell_1 = __importDefault(require("../utils/Shell"));
9
- const Git_1 = __importDefault(require("../services/Git"));
10
- const Jira_1 = require("../services/Jira");
11
- const Logger_1 = require("../utils/Logger");
12
- const helpers_1 = require("../utils/helpers");
13
- const Project_1 = require("../Project");
14
- const ENV = process.env;
15
- const runHandler = async (prj, reporter, opts, config) => {
16
- const changedFiles = await Git_1.default.getDiffFiles();
17
- if (changedFiles.length === 0 && !opts.sudo) {
18
- Logger_1.log.info('SKIP BUILD: NO changedFiles found in repo');
19
- process.exit(0);
20
- }
21
- else {
22
- Logger_1.log.info('START BUILD!');
23
- Logger_1.log.info(changedFiles.join('\n'));
24
- }
25
- const secrets = JSON.parse(ENV.SECRETS);
26
- const scheme = opts.scheme || 'iOS';
27
- const bundleID = await Shell_1.default.exec(`xcodebuild -showBuildSettings -scheme ${scheme} | grep PRODUCT_BUNDLE_IDENTIFIER | tr -d 'PRODUCT_BUNDLE_IDENTIFIER = '`, { silent: true });
28
- reporter.$message_footer_changes_from = prj.version;
29
- reporter.$message_footer_changes_to = ENV.CI_COMMIT_REF_NAME || 'dev';
30
- prj.incrementBuild();
31
- await reporter.startBuild();
32
- await fastlane('increment_build_number', { build_number: prj.build });
33
- Logger_1.log.info('unlock_keychain');
34
- await fastlane('unlock_keychain', {
35
- path: (0, helpers_1.resolvePath)(secrets.keychain.path),
36
- password: secrets.keychain.password || opts.sudo,
37
- set_default: true,
38
- }, { silent: true });
39
- await reporter.append(` + Build & archive xcode project.`);
40
- await fastlane('build_app', {
41
- scheme,
42
- configuration: 'Release',
43
- silent: false,
44
- export_method: 'app-store',
45
- xcargs: '-allowProvisioningUpdates',
46
- include_bitcode: true,
47
- }, { verbose: '' });
48
- const release = await Jira_1.Jira.resolve(prj);
49
- await reporter.append(` + Resolved tasks:${release.tasks.length}, bugs: ${release.bugs.length}`);
50
- await Git_1.default.setOrigin();
51
- await Shell_1.default.exec(`git reset --hard HEAD`, { silent: false });
52
- await prj.updateChangeLog(release.changelog);
53
- await Shell_1.default.exec(`git commit -a -m "v${prj.version}"`, { ignoreError: true, silent: false });
54
- await Git_1.default.push(ENV.CI_COMMIT_REF_NAME || 'dev');
55
- await reporter.append(` + Update <a href="${prj.url}/-/blob/${ENV.CI_COMMIT_REF_NAME || 'dev'}/CHANGELOG.md">changelog</a>.`);
56
- await reporter.append(` + Git tag new version`);
57
- await Git_1.default.makeTag(prj.version);
58
- await reporter.append(` + Save build: ${prj.build} to GitLab`);
59
- await prj.saveGitLabBuild();
60
- await reporter.appendDeploy('testfight');
61
- await reporter.append(` + Upload to Testfilght.`);
62
- await fastlane('upload_to_testflight', {
63
- api_key_path: ENV.TESTFLIGHT || `${prj.rootPath}/testflight.json`,
64
- changelog: (0, helpers_1.stripTags)(release.changelog),
65
- }, { attempts: 3, verbose: '' });
66
- if (secrets.bugsnag[scheme]) {
67
- await reporter.append(` + Download DSYMs.`);
68
- await (0, helpers_1.asyncSleep)(60);
69
- await fastlane('download_dsyms', {
70
- api_key_path: ENV.TESTFLIGHT || `${prj.rootPath}/testflight.json`,
71
- version: prj.shortVersion,
72
- build_number: prj.build,
73
- app_identifier: bundleID,
74
- wait_for_dsym_processing: true,
75
- output_directory: prj.rootPath,
76
- }, {
77
- attempts: 10, sleep: 120, silent: false, ignoreError: true,
78
- });
79
- await reporter.append(` + Upload DSYMs to BugSnag.`);
80
- const cmd = `bugsnag-dsym-upload --api-key ${secrets.bugsnag[scheme]} --project-root ./ ${prj.rootPath}/${bundleID}-${prj.shortVersion}-${prj.build}.dSYM.zip`;
81
- await Shell_1.default.execRepeat(cmd, 10, 120, { silent: false, ignoreError: true });
82
- }
83
- else {
84
- await reporter.append(` - Upload DSYMs to BugSnag. [SKIPED]`);
85
- }
86
- await reporter.append(` + Resolved tasks:${release.tasks.length}, bugs: ${release.bugs.length}`);
87
- const bugsDeployed = await Jira_1.Jira.moveBugsAsDeployed(release.bugs);
88
- if (bugsDeployed.length > 0) {
89
- await reporter.append(` + Deployed ${bugsDeployed.length} bugs.`);
90
- }
91
- else {
92
- await reporter.append(` - Deploy bugs. [SKIPED]`);
93
- }
94
- await reporter.append(` + Save ${prj.stage} -> ${prj.version} to GitLab`);
95
- await prj.saveGitLabStagesVersions();
96
- await reporter.succses(release);
97
- };
98
- async function main() {
99
- commander_1.program
100
- .option('--path <xcode project dir>', 'Path to Xcode project directory [default - current]')
101
- .option('--scheme <Build scheme>', 'Xcode scheme to build and deploy')
102
- .option('--sudo <password>', 'Sudo password for local run build')
103
- .option('--debug', 'Output extra debugging info')
104
- .option('--debug', 'Output extra debugging info')
105
- .action(await Project_1.Project.run(commander_1.program.opts() || {}, runHandler, ['SECRETS']));
106
- await commander_1.program.parseAsync(process.argv);
107
- }
108
- main();
109
- function fastlane(action, pars = {}, { silent = false, attempts = 1, sleep = 60, ignoreError = false, verbose = '--verbose' } = {}) {
110
- let params = '';
111
- for (const key of Object.keys(pars)) {
112
- switch (typeof pars[key]) {
113
- case 'object':
114
- params += ` ${key}:"${JSON.stringify(pars[key])}"`;
115
- break;
116
- case 'string':
117
- params += ` ${key}:"${pars[key]}"`;
118
- break;
119
- case 'number':
120
- params += ` ${key}:${pars[key]}`;
121
- break;
122
- default:
123
- params += ` ${key} `;
124
- }
125
- }
126
- return Shell_1.default.execRepeat(`fastlane run ${action} ${params} ${verbose}`, attempts, sleep, { silent, ignoreError });
127
- }
128
- //# sourceMappingURL=xcode.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"xcode.js","sourceRoot":"","sources":["../../src/commands/xcode.ts"],"names":[],"mappings":"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"}
package/services/Git.d.ts DELETED
@@ -1,46 +0,0 @@
1
- declare class Commit {
2
- date: Date;
3
- sha: string;
4
- msg: string;
5
- name: string;
6
- email: string;
7
- constructor(row: string, delimetr: string);
8
- get issuesKeys(): RegExpMatchArray | never[];
9
- }
10
- declare function setOrigin(opts?: {
11
- url?: string;
12
- jobId?: number;
13
- }): Promise<void>;
14
- declare function push(branch: string): Promise<void>;
15
- declare function makeTag(version: string): Promise<void>;
16
- declare function getTags(limit?: number, mask?: RegExp): Promise<string[]>;
17
- declare function getBrunch(): Promise<string | undefined>;
18
- declare function lastTag(): Promise<string | undefined>;
19
- declare function existTag(version: string): Promise<string | undefined>;
20
- declare function getCommitsAndIssues(opt: {
21
- onlyJira?: boolean;
22
- limit?: number;
23
- fromTag: string;
24
- toTag: string;
25
- }): Promise<{
26
- commits: Record<string, any>;
27
- issues: Record<string, any>;
28
- }>;
29
- declare function getDiffFiles(fromTag?: string, opt?: {
30
- silent: boolean;
31
- ignoreError: boolean;
32
- }): Promise<string[]>;
33
- declare const _default: {
34
- Commit: typeof Commit;
35
- setOrigin: typeof setOrigin;
36
- push: typeof push;
37
- makeTag: typeof makeTag;
38
- lastTag: typeof lastTag;
39
- existTag: typeof existTag;
40
- getTags: typeof getTags;
41
- getBrunch: typeof getBrunch;
42
- getCommitsAndIssues: typeof getCommitsAndIssues;
43
- getDiffFiles: typeof getDiffFiles;
44
- };
45
- export default _default;
46
- //# sourceMappingURL=Git.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Git.d.ts","sourceRoot":"","sources":["../../src/services/Git.ts"],"names":[],"mappings":"AAMA,cAAM,MAAM;IAEX,IAAI,OAAgD;IACpD,GAAG,SAA6B;IAChC,GAAG,SAAiC;IACpC,IAAI,SAA+B;IACnC,KAAK,SAA8B;gBAEvB,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;IAczC,IAAI,UAAU,+BAGb;CAED;AAKD,iBAAe,SAAS,CAAC,IAAI,GAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAM,iBAYlE;AAID,iBAAe,IAAI,CAAC,MAAM,EAAE,MAAM,iBAGjC;AAID,iBAAe,OAAO,CAAC,OAAO,EAAE,MAAM,iBAIrC;AAID,iBAAe,OAAO,CAAC,KAAK,SAAO,EAAE,IAAI,SAA0B,qBAuBlE;AAID,iBAAe,SAAS,IAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAGrD;AAMD,iBAAe,OAAO,gCAMrB;AAID,iBAAe,QAAQ,CAAC,OAAO,EAAE,MAAM,+BAQtC;AAID,iBAAe,mBAAmB,CAAC,GAAG,EAAE;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAC;aAKnF,OAAO,MAAM,EAAE,GAAG,CAAC;YAAU,OAAO,MAAM,EAAE,GAAG,CAAC;GAuCzE;AAID,iBAAe,YAAY,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG;;;CAAsC,qBAYtF;;;;;;;;;;;;;AAID,wBAWE"}
package/services/Git.js DELETED
@@ -1,138 +0,0 @@
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
- const Shell_1 = __importDefault(require("../utils/Shell"));
7
- const ENV = process.env;
8
- class Commit {
9
- date = new Date(ENV.CI_COMMIT_TIMESTAMP || 0 * 1);
10
- sha = ENV.CI_COMMIT_SHA || '';
11
- msg = ENV.CI_COMMIT_MESSAGE || '';
12
- name = ENV.GITLAB_USER_NAME || '';
13
- email = ENV.CI_COMMIT_AUTHOR || '';
14
- constructor(row, delimetr) {
15
- if (!row || !delimetr) {
16
- return;
17
- }
18
- const cols = row.split(delimetr);
19
- this.date = new Date(Date.parse(cols[3]));
20
- this.sha = cols[0];
21
- this.email = cols[2];
22
- this.name = cols[1];
23
- this.msg = cols[4];
24
- }
25
- get issuesKeys() {
26
- const matchedIssues = this.msg.match(/[A-Z0-9]+-\d+/g);
27
- return !matchedIssues || matchedIssues.length === 0 ? [] : matchedIssues;
28
- }
29
- }
30
- async function setOrigin(opts = {}) {
31
- if (!opts.jobId && !ENV.CI_JOB_ID) {
32
- return;
33
- }
34
- let url = opts.url || ENV.CI_PROJECT_URL || '';
35
- url = url.replace('https://', `https://gitlab:${ENV.GITLAB_PASS}@`);
36
- await Shell_1.default.exec(`git remote set-url --push origin ${url}.git`);
37
- await Shell_1.default.exec(`git remote set-url origin ${url}.git`);
38
- }
39
- async function push(branch) {
40
- await Shell_1.default.exec(`git pull --ff origin ${branch}`);
41
- await Shell_1.default.execRepeat(`git push origin HEAD:${branch}`);
42
- }
43
- async function makeTag(version) {
44
- const tag = `v${version}`;
45
- await Shell_1.default.exec(`git tag --force "${tag}"`);
46
- await Shell_1.default.execRepeat(`git push --force origin ${tag}`);
47
- }
48
- async function getTags(limit = 1000, mask = /v[\d]+\.[\d]+\.[\d]+$/) {
49
- await Shell_1.default.exec(`git fetch -t`, { ignoreError: true });
50
- const tagsStr = await Shell_1.default.exec('git tag | sort --version-sort', { silent: true, ignoreError: true });
51
- let list = tagsStr.split('\n').filter((f) => f.length > 2);
52
- list = list.length > 0 ? list.reverse() : [tagsStr];
53
- const tags = [];
54
- let i = 1;
55
- for (const tag of list) {
56
- if (tag === '' || mask && (mask.exec(tag)) === null) {
57
- continue;
58
- }
59
- tags.push(tag);
60
- i++;
61
- if (i >= limit) {
62
- break;
63
- }
64
- }
65
- return tags;
66
- }
67
- async function getBrunch() {
68
- const brunch = await Shell_1.default.exec(`git rev-parse --abbrev-ref HEAD`, { ignoreError: true });
69
- return brunch.length > 3 ? brunch : undefined;
70
- }
71
- async function lastTag() {
72
- const list = await getTags(1);
73
- if (list && Array.isArray(list) && list.length > 0) {
74
- return list[0];
75
- }
76
- return undefined;
77
- }
78
- async function existTag(version) {
79
- const list = await getTags(100);
80
- if (list && Array.isArray(list) && list.includes(`v${version}`)) {
81
- return `v${version}`;
82
- }
83
- return undefined;
84
- }
85
- async function getCommitsAndIssues(opt) {
86
- opt.onlyJira = opt.onlyJira ?? true;
87
- opt.limit = opt.limit ?? 10;
88
- const result = { commits: {}, issues: {} };
89
- const d = '#!|!#';
90
- const from = opt.fromTag;
91
- const to = opt.toTag || '';
92
- const par = `${from}..${from !== '' && to === '' ? 'HEAD' : to}`;
93
- const commits = await Shell_1.default.exec(`git log ${par !== '..' ? par : ''} --pretty='format:%H${d}%cN${d}%cE${d}%ci${d}%s' --max-count=${opt.limit}`, { silent: true });
94
- if (!commits || commits.includes(d) === false) {
95
- return result;
96
- }
97
- let arr = commits.split('\n');
98
- if (arr.length === 0) {
99
- arr = [commits];
100
- }
101
- for (const row of arr) {
102
- const commit = new Commit(row, d);
103
- const issuesKeys = commit.issuesKeys;
104
- if (opt.onlyJira && issuesKeys.length === 0) {
105
- continue;
106
- }
107
- result.commits[commit.sha] = commit;
108
- for (const key of issuesKeys) {
109
- const issue = result.issues[key] || [];
110
- issue.push(commit.sha);
111
- result.issues[key] = issue;
112
- }
113
- }
114
- return result;
115
- }
116
- async function getDiffFiles(fromTag, opt = { silent: true, ignoreError: true }) {
117
- const from = fromTag || await lastTag();
118
- const diffCmd = from && from !== '' ? `git diff --name-only HEAD ${from}` : "find . -not -path '*/_*' -not -path '*/\.*' -not -path '*/node_modules*' -type d -maxdepth 2";
119
- const diffStr = await Shell_1.default.exec(diffCmd, opt) || '';
120
- let arr = diffStr.split('\n');
121
- if (arr.length === 0) {
122
- arr = [diffStr];
123
- }
124
- return arr.filter((f) => f !== '').sort();
125
- }
126
- exports.default = {
127
- Commit,
128
- setOrigin,
129
- push,
130
- makeTag,
131
- lastTag,
132
- existTag,
133
- getTags,
134
- getBrunch,
135
- getCommitsAndIssues,
136
- getDiffFiles,
137
- };
138
- //# sourceMappingURL=Git.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Git.js","sourceRoot":"","sources":["../../src/services/Git.ts"],"names":[],"mappings":"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"}
@@ -1,14 +0,0 @@
1
- import { Project } from '../Project';
2
- declare class Gitlab {
3
- privateToken: string;
4
- configVarName: string;
5
- projectId: number;
6
- url: string;
7
- constructor(privateToken: string, projectId: number, configGitlabUrl?: string, configVarName?: string);
8
- downloadConfig(): Promise<any>;
9
- uploadConfig(config: Record<string, any>): Promise<void>;
10
- saveVariable(prj: Project, name: string, value: any): Promise<any>;
11
- }
12
- declare const _default: Gitlab;
13
- export default _default;
14
- //# sourceMappingURL=Gitlab.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Gitlab.d.ts","sourceRoot":"","sources":["../../src/services/Gitlab.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAKrC,cAAM,MAAM;IAEX,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;gBAEA,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,eAAe,SAAkC,EAAE,aAAa,SAAW;IAQ1H,cAAc;IA8Bd,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAexC,YAAY,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG;CAuCzD;;AAoBD,wBAA4F"}
@@ -1,101 +0,0 @@
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
- const axios_1 = __importDefault(require("axios"));
7
- const Exception_1 = require("../utils/Exception");
8
- const helpers_1 = require("../utils/helpers");
9
- const Logger_1 = require("../utils/Logger");
10
- class Gitlab {
11
- privateToken;
12
- configVarName;
13
- projectId;
14
- url;
15
- constructor(privateToken, projectId, configGitlabUrl = 'https://gitlab.soft-artel.com', configVarName = 'CONFIG') {
16
- this.privateToken = privateToken;
17
- this.projectId = projectId;
18
- this.configVarName = configVarName;
19
- this.url = `${configGitlabUrl}/api/v4/projects/${this.projectId}/variables/${configVarName}`;
20
- }
21
- async downloadConfig() {
22
- try {
23
- const resp = await (0, axios_1.default)({
24
- method: 'GET', timeout: 600, url: this.url, headers: { 'PRIVATE-TOKEN': this.privateToken },
25
- });
26
- return JSON.parse(resp.data.value);
27
- }
28
- catch (e) {
29
- const errTitle = `CONFIG ERR: GitLab project [id:${this.projectId}] has not`;
30
- if (e.response && (e.response.status === 401 || e.response.status === 403)) {
31
- const err = new Exception_1.Exception(`${errTitle} access, HTTP-401`);
32
- err.params = e.config;
33
- throw err;
34
- }
35
- if (e.response && e.response.status === 404) {
36
- const err = new Exception_1.Exception(`${errTitle} CI VARIABLE: '${this.configVarName}'`);
37
- err.params = e.config;
38
- throw err;
39
- }
40
- e.request = '...';
41
- e.connection = '...';
42
- throw e;
43
- }
44
- }
45
- async uploadConfig(config) {
46
- const resp = await (0, axios_1.default)({
47
- method: 'PUT', timeout: 600, url: this.url,
48
- headers: { 'PRIVATE-TOKEN': this.privateToken },
49
- data: { value: JSON.stringify(config, null, 3) },
50
- });
51
- if (resp.status !== 200) {
52
- console.error(resp);
53
- throw new Error('CONFIG ERR: GitLab update VAR - HTTP' + resp.status);
54
- }
55
- }
56
- async saveVariable(prj, name, value) {
57
- try {
58
- const resp = await (0, axios_1.default)({
59
- method: 'PUT',
60
- timeout: 6000,
61
- url: `${ENV.CONFIG_GITLAB_URL || 'https://gitlab.soft-artel.com'}/api/v4/projects/${prj.id}/variables/${name}`,
62
- headers: { 'PRIVATE-TOKEN': ENV.GITLAB_API_TOKEN || '' },
63
- data: {
64
- value,
65
- },
66
- });
67
- Logger_1.log.dbg(resp.data);
68
- return JSON.parse(resp.data.value);
69
- }
70
- catch (e) {
71
- const errTitle = `GitLab project [${prj.id}] has not`;
72
- if (e.response && (e.response.status === 401 || e.response.status === 403)) {
73
- const err = new Exception_1.Exception(`${errTitle} access, HTTP-401`);
74
- err.params = e.config;
75
- throw err;
76
- }
77
- if (e.response && e.response.status === 404) {
78
- const err = new Exception_1.Exception(`${errTitle} CI VARIABLE: ${name}`);
79
- err.params = e.config;
80
- throw err;
81
- }
82
- e.request = '...';
83
- e.connection = '...';
84
- throw e;
85
- }
86
- }
87
- }
88
- const ENV = process.env;
89
- const privateToken = ENV.GITLAB_PASS;
90
- const projectId = ENV.CI_PROJECT_ID;
91
- (0, helpers_1.checkVarsExisting)([{
92
- field: privateToken,
93
- exceptionMessage: 'GITLAB_PASS must be provided',
94
- }, {
95
- field: projectId,
96
- exceptionMessage: 'CI_PROJECT_ID must be provided',
97
- }]);
98
- const configGitlabUrl = ENV.CONFIG_GITLAB_URL;
99
- const configVarName = ENV.CONFIG_VAR_NAME;
100
- exports.default = new Gitlab(privateToken, Number(projectId), configGitlabUrl, configVarName);
101
- //# sourceMappingURL=Gitlab.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Gitlab.js","sourceRoot":"","sources":["../../src/services/Gitlab.ts"],"names":[],"mappings":"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"}
@@ -1,32 +0,0 @@
1
- import { Project } from '../Project';
2
- export interface ReleaseInfo {
3
- commits: Record<string, any>[];
4
- components: string[];
5
- bugs: Issue[];
6
- tasks: Issue[];
7
- changelog: string;
8
- }
9
- declare function resolve(prj: Project, head?: boolean): Promise<ReleaseInfo>;
10
- export declare class Issue {
11
- key: string;
12
- updated: Date;
13
- type: string;
14
- status: string;
15
- summary: string;
16
- assignee: {
17
- name: string;
18
- email: string;
19
- login: string;
20
- };
21
- components: string[];
22
- constructor(fields: Record<string, any>);
23
- }
24
- declare function moveBugsAsDeployed(bugs: {
25
- key: string;
26
- }[]): Promise<any>;
27
- export declare const Jira: {
28
- resolve: typeof resolve;
29
- moveBugsAsDeployed: typeof moveBugsAsDeployed;
30
- };
31
- export {};
32
- //# sourceMappingURL=Jira.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Jira.d.ts","sourceRoot":"","sources":["../../src/services/Jira.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAOrC,MAAM,WAAW,WAAW;IAC3B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC;IAC/B,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,IAAI,EAAE,KAAK,EAAE,CAAC;IACd,KAAK,EAAE,KAAK,EAAE,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CAClB;AAID,iBAAe,OAAO,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,UAAO,GAAG,OAAO,CAAC,WAAW,CAAC,CAyGtE;AAID,qBAAa,KAAK;IAEjB,GAAG,SAAM;IACT,OAAO,OAAgB;IAEvB,IAAI,SAAM;IACV,MAAM,SAAM;IACZ,OAAO,SAAM;IACb,QAAQ;;;;MAAsC;IAC9C,UAAU,EAAE,MAAM,EAAE,CAAM;gBAEd,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;CAavC;AAID,iBAAe,kBAAkB,CAAC,IAAI,EAAE;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,EAAE,gBAuBxD;AAKD,eAAO,MAAM,IAAI;;;CAGhB,CAAC"}
package/services/Jira.js DELETED
@@ -1,136 +0,0 @@
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.Jira = exports.Issue = void 0;
7
- const axios_1 = __importDefault(require("axios"));
8
- const Logger_1 = require("../utils/Logger");
9
- const helpers_1 = require("../utils/helpers");
10
- const Git_1 = __importDefault(require("./Git"));
11
- const ENV = process.env;
12
- const RELEASE_BO_URL = ENV.RELEASE_BO_URL || 'https://bo.soft-artel.com/ci/jira';
13
- const RELEASE_JIRA_URL = ENV.RELEASE_JIRA_URL || 'https://jira.soft-artel.com';
14
- async function resolve(prj, head = true) {
15
- const release = {
16
- commits: [], components: [], bugs: [], tasks: [], changelog: 'No issues found in git commits!',
17
- };
18
- const fromTag = prj.prevVersion ? await Git_1.default.existTag(prj.prevVersion) : await Git_1.default.lastTag();
19
- const toTag = head ? undefined : `v${prj.version}`;
20
- const gitLog = await Git_1.default.getCommitsAndIssues({
21
- fromTag: fromTag ?? '', toTag: toTag ?? '', onlyJira: true, limit: 1000,
22
- });
23
- release.commits = Object.values(gitLog.commits);
24
- const issuesKeys = Object.keys(gitLog.issues);
25
- if (issuesKeys.length === 0) {
26
- Logger_1.log.info('No issues found in git log!');
27
- return release;
28
- }
29
- try {
30
- const resp = await (0, axios_1.default)({
31
- method: 'POST',
32
- url: `${RELEASE_BO_URL}/resolve`,
33
- headers: { 'PRIVATE-TOKEN': ENV.RELEASE_BO_TOKEN || ENV.GITLAB_PASS || '' },
34
- data: { issues: issuesKeys },
35
- });
36
- if (resp?.data?.data?.bugs && Array.isArray(resp.data.data.bugs)) {
37
- for (const fields of resp.data.data.bugs) {
38
- const issue = new Issue(fields);
39
- if (issue.key !== '') {
40
- release.bugs.push(issue);
41
- }
42
- }
43
- }
44
- if (resp?.data?.data?.tasks && Array.isArray(resp.data.data.tasks)) {
45
- for (const fields of resp.data.data.tasks) {
46
- const issue = new Issue(fields);
47
- if (issue.key !== '') {
48
- release.tasks.push(issue);
49
- }
50
- }
51
- }
52
- if (resp?.data?.data?.components) {
53
- release.components = Object.values(resp.data.data.components).sort();
54
- }
55
- }
56
- catch (err) {
57
- err.request = '...';
58
- err.connection = '...';
59
- err.message = 'JIRA RESOLVE ERR: ' + err.message;
60
- throw err;
61
- }
62
- Logger_1.log.info(`\n\n===============\nRELEASE: ${prj.group}/${prj.name}/v${prj.version}`, '', `pev:${fromTag}`);
63
- let msg = '';
64
- if (release.components.length > 0) {
65
- msg += '<b>Components:</b>\n';
66
- for (const comp of release.components) {
67
- msg += `- ${comp}\n`;
68
- }
69
- msg += '\n';
70
- }
71
- if (release.tasks.length > 0) {
72
- msg += '<b>Done:</b>\n';
73
- for (const issue of release.tasks) {
74
- msg += `- 🛠 <b><a href="${RELEASE_JIRA_URL}/browse/${issue.key}">${issue.key}</a></b>: ${issue.summary}\n`;
75
- }
76
- msg += '\n';
77
- }
78
- if (release.bugs.length > 0) {
79
- msg += '<b>BugFixes:</b>\n';
80
- for (const issue of release.bugs) {
81
- msg += `- 🐞 <b><a href="${RELEASE_JIRA_URL}/browse/${issue.key}">${issue.key}</a></b>: ${issue.summary}\n`;
82
- }
83
- msg += '\n';
84
- }
85
- release.changelog = msg;
86
- Logger_1.log.info('changelog', msg);
87
- Logger_1.log.info('text', (0, helpers_1.stripTags)(msg));
88
- return release;
89
- }
90
- class Issue {
91
- key = '';
92
- updated = new Date();
93
- type = '';
94
- status = '';
95
- summary = '';
96
- assignee = { name: '', email: '', login: '' };
97
- components = [];
98
- constructor(fields) {
99
- this.key = fields.key;
100
- this.updated = new Date(Date.parse(fields.updated));
101
- this.type = fields.type;
102
- this.status = fields.status;
103
- this.summary = fields.summary;
104
- if (fields.assignee && typeof fields.assignee === 'object') {
105
- this.assignee.name = fields.assignee.name;
106
- this.assignee.email = fields.assignee.email;
107
- this.assignee.login = fields.assignee.login;
108
- }
109
- this.components = Array.isArray(fields.components) ? fields.components : [];
110
- }
111
- }
112
- exports.Issue = Issue;
113
- async function moveBugsAsDeployed(bugs) {
114
- const issuesKeys = [];
115
- for (const bug of bugs) {
116
- issuesKeys.push(bug.key);
117
- }
118
- if (issuesKeys.length === 0) {
119
- return [];
120
- }
121
- const resp = await (0, axios_1.default)({
122
- method: 'POST',
123
- url: `${RELEASE_BO_URL}/deployed`,
124
- headers: { 'PRIVATE-TOKEN': ENV.RELEASE_BO_TOKEN || ENV.GITLAB_PASS || '' },
125
- data: { issues: issuesKeys },
126
- });
127
- if (resp?.data?.data?.deployed && Array.isArray(resp.data.data.deployed)) {
128
- return resp.data.data.deployed;
129
- }
130
- return [];
131
- }
132
- exports.Jira = {
133
- resolve,
134
- moveBugsAsDeployed,
135
- };
136
- //# sourceMappingURL=Jira.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Jira.js","sourceRoot":"","sources":["../../src/services/Jira.ts"],"names":[],"mappings":"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"}