Skip to content

Commit 9871695

Browse files
committed
Support Tencent Kona JDK (#671)
1 parent 67fbd72 commit 9871695

File tree

9 files changed

+726
-6
lines changed

9 files changed

+726
-6
lines changed

.github/workflows/e2e-versions.yml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,14 +30,17 @@ jobs:
3030
'microsoft',
3131
'semeru',
3232
'corretto',
33-
'dragonwell'
33+
'dragonwell',
34+
'kona'
3435
] # internally 'adopt-hotspot' is the same as 'adopt'
3536
version: ['21', '11', '17']
3637
exclude:
3738
- distribution: microsoft
3839
version: 8
3940
- distribution: dragonwell
4041
os: macos-13
42+
- distribution: kona
43+
version: 21
4144
include:
4245
- distribution: oracle
4346
os: macos-13

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,7 @@ Currently, the following distributions are supported:
108108
| `semeru` | IBM Semeru Runtime Open Edition | [Link](https://developer.ibm.com/languages/java/semeru-runtimes/downloads/) | [Link](https://openjdk.java.net/legal/gplv2+ce.html) |
109109
| `oracle` | Oracle JDK | [Link](https://www.oracle.com/java/technologies/downloads/) | [Link](https://java.com/freeuselicense)
110110
| `dragonwell` | Alibaba Dragonwell JDK | [Link](https://dragonwell-jdk.io/) | [Link](https://www.aliyun.com/product/dragonwell/)
111+
| `kona` | Tencent Kona JDK | [Link](https://tencent.github.io/konajdk/) | [Link](https://tencent.github.io/konajdk/LICENSE.txt)
111112

112113
**NOTE:** The different distributors can provide discrepant list of available versions / supported configurations. Please refer to the official documentation to see the list of supported versions.
113114

@@ -257,6 +258,7 @@ In the example above multiple JDKs are installed for the same job. The result af
257258
- [Amazon Corretto](docs/advanced-usage.md#Amazon-Corretto)
258259
- [Oracle](docs/advanced-usage.md#Oracle)
259260
- [Alibaba Dragonwell](docs/advanced-usage.md#Alibaba-Dragonwell)
261+
- [Tencent Kona](docs/advanced-usage.md#Tencent-Kona)
260262
- [Installing custom Java package type](docs/advanced-usage.md#Installing-custom-Java-package-type)
261263
- [Installing custom Java architecture](docs/advanced-usage.md#Installing-custom-Java-architecture)
262264
- [Installing custom Java distribution from local file](docs/advanced-usage.md#Installing-Java-from-local-file)

__tests__/data/kona.json

Lines changed: 122 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,122 @@
1+
{
2+
"8": [
3+
{
4+
"version": "8.0.19",
5+
"jdkVersion": "8u422",
6+
"latest": true,
7+
"baseUrl": "https://github.com/Tencent/TencentKona-8/releases/download/8.0.19-GA/",
8+
"files": [
9+
{
10+
"os": "linux",
11+
"arch": "aarch64",
12+
"filename": "TencentKona8.0.19.b1_jdk_linux-aarch64_8u422.tar.gz",
13+
"checksum": "ef031cc28012413ee771c318c6986bfb1dd80b16962ae073d775e269397f6580"
14+
},
15+
{
16+
"os": "linux",
17+
"arch": "x86_64",
18+
"filename": "TencentKona8.0.19.b1_jdk_linux-x86_64_8u422.tar.gz",
19+
"checksum": "57866cb132fc551028257dd1a6ad65650ca0436a1811f30c53ad67844e35c781"
20+
},
21+
{
22+
"os": "macos",
23+
"arch": "aarch64",
24+
"filename": "TencentKona8.0.19.b1_jdk_macosx-aarch64_8u422_notarized.tar.gz",
25+
"checksum": "4c9c169b983fc0b1fd2bbcdd40daa410c72c10ad360d6a61957270c9bdbd96d9"
26+
},
27+
{
28+
"os": "macos",
29+
"arch": "x86_64",
30+
"filename": "TencentKona8.0.19.b1_jdk_macosx-x86_64_8u422_notarized.tar.gz",
31+
"checksum": "9f9be00fb2259bc6ea0b117cb96041b12b39fdf537991af75e9e475e73c6b40f"
32+
},
33+
{
34+
"os": "windows",
35+
"arch": "x86_64",
36+
"filename": "TencentKona8.0.19.b1_jdk_windows-x86_64_8u422_signed.zip",
37+
"checksum": "afc16c4d048f6c90099841e16ad50314ae710340ec057ef19c845f5d43b6ee9e"
38+
}
39+
]
40+
}
41+
],
42+
"11": [
43+
{
44+
"version": "11.0.24",
45+
"jdkVersion": "11.0.24",
46+
"latest": true,
47+
"baseUrl": "https://github.com/Tencent/TencentKona-11/releases/download/kona11.0.24/",
48+
"files": [
49+
{
50+
"os": "linux",
51+
"arch": "aarch64",
52+
"filename": "TencentKona-11.0.24.b1-jdk_linux-aarch64.tar.gz",
53+
"checksum": "505aa9e39c6fd9dab20443c0b4ed8fb1fedb40109c52b00edeaa7774c6fe9de9"
54+
},
55+
{
56+
"os": "linux",
57+
"arch": "x86_64",
58+
"filename": "TencentKona-11.0.24.b1-jdk_linux-x86_64.tar.gz",
59+
"checksum": "63ff8d821a2b0eef02aa257a959e53150e02865f8eb143feca1b40179d94a3f3"
60+
},
61+
{
62+
"os": "macos",
63+
"arch": "aarch64",
64+
"filename": "TencentKona-11.0.24.b1_jdk_macosx-aarch64_notarized.tar.gz",
65+
"checksum": "e8a6c493a9922fbabc712fa70a50260f001d9202e3370224eabc27adfcf008de"
66+
},
67+
{
68+
"os": "macos",
69+
"arch": "x86_64",
70+
"filename": "TencentKona-11.0.24.b1_jdk_macosx-x86_64_notarized.tar.gz",
71+
"checksum": "c8316cc8388faaa3d898f412a63ef42efbad243a01eaef37f6a19d77e4cd7956"
72+
},
73+
{
74+
"os": "windows",
75+
"arch": "x86_64",
76+
"filename": "TencentKona-11.0.24.b1_jdk_windows-x86_64_signed.zip",
77+
"checksum": "222b135f637af85e3092921a9c9bfc45a743944c179e4170d93e4eea82165858"
78+
}
79+
]
80+
}
81+
],
82+
"17": [
83+
{
84+
"version": "17.0.12",
85+
"jdkVersion": "17.0.12",
86+
"latest": true,
87+
"baseUrl": "https://github.com/Tencent/TencentKona-17/releases/download/TencentKona-17.0.12/",
88+
"files": [
89+
{
90+
"os": "linux",
91+
"arch": "aarch64",
92+
"filename": "TencentKona-17.0.12.b1-jdk_linux-aarch64.tar.gz",
93+
"checksum": "bf65e9b3ab5781a5bb9ddfe5a6032efa8f099f48d85b5dcec686e5a4c0647fea"
94+
},
95+
{
96+
"os": "linux",
97+
"arch": "x86_64",
98+
"filename": "TencentKona-17.0.12.b1-jdk_linux-x86_64.tar.gz",
99+
"checksum": "b8b6706c3710777240696c672168c8065d7a77c2199238ace7caffe353deab27"
100+
},
101+
{
102+
"os": "macos",
103+
"arch": "aarch64",
104+
"filename": "TencentKona-17.0.12.b1_jdk_macosx-aarch64_notarized.tar.gz",
105+
"checksum": "d1f5653e2e8c7a0febeeadd13d7f4270076c0b4bde3785d4a93a9444c69800b5"
106+
},
107+
{
108+
"os": "macos",
109+
"arch": "x86_64",
110+
"filename": "TencentKona-17.0.12.b1_jdk_macosx-x86_64_notarized.tar.gz",
111+
"checksum": "870678cabbabd6970e8f9d0a7fafa8d87597f71d9f581d0f0d103879101e97bc"
112+
},
113+
{
114+
"os": "windows",
115+
"arch": "x86_64",
116+
"filename": "TencentKona-17.0.12.b1_jdk_windows-x86_64_signed.zip",
117+
"checksum": "0a0bc7c10cd9d0852f368674d02ee6d39200ef4d8857904004b677a15937e412"
118+
}
119+
]
120+
}
121+
]
122+
}
Lines changed: 189 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,189 @@
1+
import {KonaDistribution} from '../../src/distributions/kona/installer';
2+
3+
import manifestData from '../data/kona.json';
4+
5+
function mockDistr(
6+
version: string,
7+
os: string,
8+
arch: string,
9+
packageType: string
10+
): KonaDistribution {
11+
const distribution = new KonaDistribution({
12+
version: version,
13+
architecture: arch,
14+
packageType: packageType,
15+
checkLatest: false
16+
});
17+
18+
distribution['getOs'] = () => os;
19+
distribution['fetchReleaseInfo'] = async () => manifestData;
20+
21+
return distribution;
22+
}
23+
24+
describe('Check getAvailableReleases', () => {
25+
it.each([
26+
['8', 'linux', 'aarch64', 'linux-aarch64'],
27+
['8.0.19', 'macos', 'x86_64', 'macosx-x86_64'],
28+
['11', 'linux', 'x86_64', 'linux-x86_64'],
29+
['11.0.24', 'macos', 'aarch64', 'macosx-aarch64'],
30+
['17.0.12', 'windows', 'x86_64', 'windows-x86_64']
31+
])(
32+
'should get releases with the specified version "%s", OS "%s" and arch "%s"',
33+
async (
34+
version: string,
35+
os: string,
36+
arch: string,
37+
expectedPattern: string
38+
) => {
39+
const distribution = mockDistr(version, os, arch, 'jdk');
40+
41+
const releases = await distribution['getAvailableReleases']();
42+
expect(releases).not.toBeNull();
43+
expect(releases.length).toBe(3);
44+
releases.forEach((release, index) =>
45+
expect(releases[index].downloadUrl).toContain(expectedPattern)
46+
);
47+
}
48+
);
49+
});
50+
51+
describe('Check findPackageForDownload', () => {
52+
it.each([
53+
[
54+
'8',
55+
'linux',
56+
'aarch64',
57+
'https://github.com/Tencent/TencentKona-8/releases/download/8.0.19-GA/TencentKona8.0.19.b1_jdk_linux-aarch64_8u422.tar.gz'
58+
],
59+
[
60+
'8.0.19',
61+
'linux',
62+
'x86_64',
63+
'https://github.com/Tencent/TencentKona-8/releases/download/8.0.19-GA/TencentKona8.0.19.b1_jdk_linux-x86_64_8u422.tar.gz'
64+
],
65+
[
66+
'8.0.19',
67+
'macos',
68+
'aarch64',
69+
'https://github.com/Tencent/TencentKona-8/releases/download/8.0.19-GA/TencentKona8.0.19.b1_jdk_macosx-aarch64_8u422_notarized.tar.gz'
70+
],
71+
[
72+
'8.0.19',
73+
'macos',
74+
'x86_64',
75+
'https://github.com/Tencent/TencentKona-8/releases/download/8.0.19-GA/TencentKona8.0.19.b1_jdk_macosx-x86_64_8u422_notarized.tar.gz'
76+
],
77+
[
78+
'8.0.19',
79+
'windows',
80+
'x86_64',
81+
'https://github.com/Tencent/TencentKona-8/releases/download/8.0.19-GA/TencentKona8.0.19.b1_jdk_windows-x86_64_8u422_signed.zip'
82+
],
83+
84+
[
85+
'11',
86+
'linux',
87+
'aarch64',
88+
'https://github.com/Tencent/TencentKona-11/releases/download/kona11.0.24/TencentKona-11.0.24.b1-jdk_linux-aarch64.tar.gz'
89+
],
90+
[
91+
'11.0.24',
92+
'linux',
93+
'x86_64',
94+
'https://github.com/Tencent/TencentKona-11/releases/download/kona11.0.24/TencentKona-11.0.24.b1-jdk_linux-x86_64.tar.gz'
95+
],
96+
[
97+
'11.0.24',
98+
'macos',
99+
'aarch64',
100+
'https://github.com/Tencent/TencentKona-11/releases/download/kona11.0.24/TencentKona-11.0.24.b1_jdk_macosx-aarch64_notarized.tar.gz'
101+
],
102+
[
103+
'11.0.24',
104+
'macos',
105+
'x86_64',
106+
'https://github.com/Tencent/TencentKona-11/releases/download/kona11.0.24/TencentKona-11.0.24.b1_jdk_macosx-x86_64_notarized.tar.gz'
107+
],
108+
[
109+
'11.0.24',
110+
'windows',
111+
'x86_64',
112+
'https://github.com/Tencent/TencentKona-11/releases/download/kona11.0.24/TencentKona-11.0.24.b1_jdk_windows-x86_64_signed.zip'
113+
],
114+
115+
[
116+
'17',
117+
'linux',
118+
'aarch64',
119+
'https://github.com/Tencent/TencentKona-17/releases/download/TencentKona-17.0.12/TencentKona-17.0.12.b1-jdk_linux-aarch64.tar.gz'
120+
],
121+
[
122+
'17.0.12',
123+
'linux',
124+
'x86_64',
125+
'https://github.com/Tencent/TencentKona-17/releases/download/TencentKona-17.0.12/TencentKona-17.0.12.b1-jdk_linux-x86_64.tar.gz'
126+
],
127+
[
128+
'17.0.12',
129+
'macos',
130+
'aarch64',
131+
'https://github.com/Tencent/TencentKona-17/releases/download/TencentKona-17.0.12/TencentKona-17.0.12.b1_jdk_macosx-aarch64_notarized.tar.gz'
132+
],
133+
[
134+
'17.0.12',
135+
'macos',
136+
'x86_64',
137+
'https://github.com/Tencent/TencentKona-17/releases/download/TencentKona-17.0.12/TencentKona-17.0.12.b1_jdk_macosx-x86_64_notarized.tar.gz'
138+
],
139+
[
140+
'17.0.12',
141+
'windows',
142+
'x86_64',
143+
'https://github.com/Tencent/TencentKona-17/releases/download/TencentKona-17.0.12/TencentKona-17.0.12.b1_jdk_windows-x86_64_signed.zip'
144+
]
145+
])(
146+
'should return the download URL with the specified version "%s", OS "%s" and arch "%s"',
147+
async (version: string, os: string, arch: string, expectedUrl: string) => {
148+
const distribution = mockDistr(version, os, arch, 'jdk');
149+
150+
const availableRelease = await distribution['findPackageForDownload'](
151+
version
152+
);
153+
expect(availableRelease).not.toBeNull();
154+
expect(availableRelease.url).toBe(expectedUrl);
155+
}
156+
);
157+
});
158+
159+
describe('No release is found', () => {
160+
it.each([
161+
['8', 'linux', 'x86'],
162+
['17', 'solaris', 'x86_64'],
163+
['21', 'linux', 'x86_64']
164+
])(
165+
`should throw an error due to no release with the specified version "%s", os "%s" and arch "%s"`,
166+
async (version: string, os: string, arch: string) => {
167+
const distribution = mockDistr(version, os, arch, 'jdk');
168+
169+
await expect(
170+
distribution['findPackageForDownload'](version)
171+
).rejects.toThrow(
172+
`No Kona release for the specified version "${version}" on OS "${os}" and arch "${arch}".`
173+
);
174+
}
175+
);
176+
});
177+
178+
describe('The package type must be jdk', () => {
179+
it('should throw an error due to the specified package type is not jdk', async () => {
180+
const version = '8.0.19';
181+
const os = 'linux';
182+
const arch = 'x86_64';
183+
const distribution = mockDistr(version, os, arch, 'jre');
184+
185+
await expect(
186+
distribution['findPackageForDownload'](version)
187+
).rejects.toThrow('Kona provides jdk only');
188+
});
189+
});

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy