Skip to content

Commit 4a28a66

Browse files
chore(ci): support independent versioning (#248)
* chore: replace next with releaseType * chore: parse new issue body correctly * chore(ci): support independent versioning * chore: fix version bumping * chore: fix test cases * chore: add more test * chore: move mainGenerator to clients.config.json * chore: clean up code * chore: rename variables * chore: extract types to types.ts * Update scripts/release/__tests__/process-release.test.ts Co-authored-by: Clément Vannicatte <[email protected]> * chore: update types * chore: update test * chore: fix broken config * chore: avoid eslint error * chore: avoid eslint error Co-authored-by: Clément Vannicatte <[email protected]>
1 parent bff17e0 commit 4a28a66

11 files changed

+330
-152
lines changed

config/clients.config.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
{
22
"java": {
33
"folder": "clients/algoliasearch-client-java-2",
4+
"mainGenerator": "javascript-search",
45
"modelFolder": "algoliasearch-core/com/algolia/model",
56
"customGenerator": "algolia-java",
67
"tests": {
@@ -10,6 +11,7 @@
1011
},
1112
"javascript": {
1213
"folder": "clients/algoliasearch-client-javascript",
14+
"mainGenerator": "java-search",
1315
"modelFolder": "model",
1416
"tests": {
1517
"extension": ".test.ts",
@@ -18,6 +20,7 @@
1820
},
1921
"php": {
2022
"folder": "clients/algoliasearch-client-php",
23+
"mainGenerator": "php-search",
2124
"modelFolder": "lib/Model"
2225
}
2326
}

scripts/common.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,10 @@ Object.entries(openapitools['generator-cli'].generators).forEach(
4040
}
4141
);
4242

43+
export function getPackageVersion(generator: string): string {
44+
return GENERATORS[generator].additionalProperties.packageVersion;
45+
}
46+
4347
export const LANGUAGES = [
4448
...new Set(Object.values(GENERATORS).map((gen) => gen.language)),
4549
];

scripts/release/__tests__/create-release-issue.test.ts

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -32,21 +32,21 @@ describe('create release issue', () => {
3232
getVersionChangesText({
3333
javascript: {
3434
current: '0.0.1',
35-
next: '0.0.2',
35+
releaseType: 'patch',
3636
},
3737
php: {
3838
current: '0.0.1',
39-
next: '0.0.2',
39+
releaseType: 'patch',
4040
},
4141
java: {
4242
current: '0.0.1',
43-
next: '0.0.2',
43+
releaseType: 'patch',
4444
},
4545
})
4646
).toMatchInlineSnapshot(`
47-
"- [x] javascript: v0.0.1 -> v0.0.2
48-
- [x] java: v0.0.1 -> v0.0.2
49-
- [x] php: v0.0.1 -> v0.0.2"
47+
"- [x] javascript: v0.0.1 -> \`patch\` _(e.g. v0.0.2)_
48+
- [x] java: v0.0.1 -> \`patch\` _(e.g. v0.0.2)_
49+
- [x] php: v0.0.1 -> \`patch\` _(e.g. v0.0.2)_"
5050
`);
5151
});
5252

@@ -55,21 +55,21 @@ describe('create release issue', () => {
5555
getVersionChangesText({
5656
javascript: {
5757
current: '0.0.1',
58-
next: '0.0.2',
58+
releaseType: 'patch',
5959
},
6060
php: {
6161
current: '0.0.1',
62-
next: '0.0.1',
62+
releaseType: null,
6363
noCommit: true,
6464
},
6565
java: {
6666
current: '0.0.1',
67-
next: '0.0.2',
67+
releaseType: 'patch',
6868
},
6969
})
7070
).toMatchInlineSnapshot(`
71-
"- [x] javascript: v0.0.1 -> v0.0.2
72-
- [x] java: v0.0.1 -> v0.0.2
71+
"- [x] javascript: v0.0.1 -> \`patch\` _(e.g. v0.0.2)_
72+
- [x] java: v0.0.1 -> \`patch\` _(e.g. v0.0.2)_
7373
- ~php: v0.0.1 (no commit)~"
7474
`);
7575
});
@@ -79,23 +79,23 @@ describe('create release issue', () => {
7979
getVersionChangesText({
8080
javascript: {
8181
current: '0.0.1',
82-
next: '0.0.2',
82+
releaseType: 'patch',
8383
},
8484
php: {
8585
current: '0.0.1',
86-
next: '0.0.1',
86+
releaseType: 'minor',
8787
},
8888
java: {
8989
current: '0.0.1',
90-
next: '0.0.2',
90+
releaseType: 'patch',
9191
skipRelease: true,
9292
},
9393
})
9494
).toMatchInlineSnapshot(`
95-
"- [x] javascript: v0.0.1 -> v0.0.2
96-
- [ ] java: v0.0.1 -> v0.0.2
95+
"- [x] javascript: v0.0.1 -> \`patch\` _(e.g. v0.0.2)_
96+
- [ ] java: v0.0.1 -> \`patch\` _(e.g. v0.0.2)_
9797
- No \`feat\` or \`fix\` commit, thus unchecked by default.
98-
- [x] php: v0.0.1 -> v0.0.1"
98+
- [x] php: v0.0.1 -> \`minor\` _(e.g. v0.1.0)_"
9999
`);
100100
});
101101

@@ -123,7 +123,7 @@ describe('create release issue', () => {
123123
],
124124
});
125125

126-
expect(versions.javascript.next).toEqual('1.0.0');
126+
expect(versions.javascript.releaseType).toEqual('major');
127127
});
128128

129129
it('bumps minor version for feat', () => {
@@ -150,7 +150,7 @@ describe('create release issue', () => {
150150
],
151151
});
152152

153-
expect(versions.php.next).toEqual('0.1.0');
153+
expect(versions.php.releaseType).toEqual('minor');
154154
});
155155

156156
it('bumps patch version for fix', () => {
@@ -177,7 +177,7 @@ describe('create release issue', () => {
177177
],
178178
});
179179

180-
expect(versions.java.next).toEqual('0.0.2');
180+
expect(versions.java.releaseType).toEqual('patch');
181181
});
182182

183183
it('marks noCommit for languages without any commit', () => {
Lines changed: 44 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,67 @@
1+
import { getVersionChangesText } from '../create-release-issue';
12
import { getVersionsToRelease, getLangsToUpdateRepo } from '../process-release';
3+
import TEXT from '../text';
24

35
describe('process release', () => {
46
it('gets versions to release', () => {
57
const versions = getVersionsToRelease(`
68
## Version Changes
79
8-
- [x] javascript: v1.0.0 -> v1.1.0
9-
- [x] php: v2.0.0 -> v2.0.1
10-
- [ ] java: v3.0.0 -> v3.0.1
10+
- [x] javascript: v1.0.0 -> \`minor\` (e.g. v1.1.0)
11+
- [x] php: v2.0.0 -> \`patch\` (e.g. v2.0.1)
12+
- [ ] java: v3.0.0 -> \`patch\` (e.g. v3.0.1)
1113
`);
1214

1315
expect(Object.keys(versions)).toEqual(['javascript', 'php']);
1416
expect(versions.javascript.current).toEqual('1.0.0');
15-
expect(versions.javascript.next).toEqual('1.1.0');
17+
expect(versions.javascript.releaseType).toEqual('minor');
1618
expect(versions.php.current).toEqual('2.0.0');
17-
expect(versions.php.next).toEqual('2.0.1');
19+
expect(versions.php.releaseType).toEqual('patch');
1820
});
1921

2022
it('gets langs to update', () => {
2123
expect(
2224
getLangsToUpdateRepo(`
2325
## Version Changes
2426
25-
- [ ] javascript: v1.0.0 -> v1.1.0
26-
- [x] php: v2.0.0 -> v2.0.1
27-
- [ ] java: v3.0.0 -> v3.0.1
27+
- [ ] javascript: v1.0.0 -> \`minor\` (e.g. v1.1.0)
28+
- [x] php: v2.0.0 -> \`patch\` (e.g. v2.0.1)
29+
- [ ] java: v3.0.0 -> \`patch\` (e.g. v3.0.1)
2830
`)
2931
).toEqual(['javascript', 'java']);
3032
});
33+
34+
it('parses issue body correctly', () => {
35+
// This test is a glue between create-release-issue and process-release.
36+
const issueBody = [
37+
TEXT.versionChangeHeader,
38+
getVersionChangesText({
39+
javascript: {
40+
current: '0.0.1',
41+
releaseType: 'patch',
42+
},
43+
php: {
44+
current: '0.0.1',
45+
releaseType: 'minor',
46+
},
47+
java: {
48+
current: '0.0.1',
49+
releaseType: 'patch',
50+
skipRelease: true,
51+
},
52+
}),
53+
].join('\n');
54+
55+
const versions = getVersionsToRelease(issueBody);
56+
expect(versions).toEqual({
57+
javascript: expect.objectContaining({
58+
current: '0.0.1',
59+
releaseType: 'patch',
60+
}),
61+
php: expect.objectContaining({
62+
current: '0.0.1',
63+
releaseType: 'minor',
64+
}),
65+
});
66+
});
3167
});

scripts/release/common.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,20 @@
1+
import clientsConfig from '../../config/clients.config.json';
12
import config from '../../config/release.config.json';
23
import { getGitHubUrl, run } from '../common';
34

45
export const RELEASED_TAG = config.releasedTag;
56
export const MAIN_BRANCH = config.mainBranch;
67
export const OWNER = config.owner;
78
export const REPO = config.repo;
9+
export const MAIN_GENERATOR = Object.keys(clientsConfig).reduce(
10+
(mainGenerator: { [lang: string]: string }, lang: string) => {
11+
return {
12+
...mainGenerator,
13+
[lang]: clientsConfig[lang].mainGenerator,
14+
};
15+
},
16+
{}
17+
);
818

919
export function getTargetBranch(language: string): string {
1020
return config.targetBranch[language] || config.defaultTargetBranch;

0 commit comments

Comments
 (0)