mirror of
https://github.com/actions/setup-java.git
synced 2026-07-09 15:00:29 +00:00
Compare commits
1 Commits
4f992d8898
...
2111626d9c
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2111626d9c |
56
.github/workflows/e2e-versions.yml
vendored
56
.github/workflows/e2e-versions.yml
vendored
@ -71,11 +71,11 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
java-version: ${{ matrix.version }}
|
java-version: ${{ matrix.version }}
|
||||||
distribution: ${{ matrix.distribution }}
|
distribution: ${{ matrix.distribution }}
|
||||||
env:
|
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
- name: Verify Java
|
- name: Verify Java
|
||||||
run: bash __tests__/verify-java.sh "${{ matrix.version }}" "${{ steps.setup-java.outputs.path }}"
|
run: bash __tests__/verify-java.sh "${{ matrix.version }}" "${{ steps.setup-java.outputs.path }}"
|
||||||
shell: bash
|
shell: bash
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
setup-java-major-minor-versions:
|
setup-java-major-minor-versions:
|
||||||
name: ${{ matrix.distribution }} ${{ matrix.version }} (jdk-x64) - ${{ matrix.os }}
|
name: ${{ matrix.distribution }} ${{ matrix.version }} (jdk-x64) - ${{ matrix.os }}
|
||||||
@ -283,8 +283,7 @@ jobs:
|
|||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
os: [macos-13, windows-latest, ubuntu-latest]
|
os: [macos-13, windows-latest, ubuntu-latest]
|
||||||
distribution:
|
distribution: ['temurin', 'zulu', 'liberica', 'semeru', 'sapmachine']
|
||||||
['temurin', 'zulu', 'liberica', 'semeru', 'sapmachine', 'jetbrains']
|
|
||||||
java-package: ['jre']
|
java-package: ['jre']
|
||||||
version: ['17.0']
|
version: ['17.0']
|
||||||
include:
|
include:
|
||||||
@ -308,55 +307,6 @@ jobs:
|
|||||||
java-package: jre
|
java-package: jre
|
||||||
version: '8'
|
version: '8'
|
||||||
os: windows-latest
|
os: windows-latest
|
||||||
- distribution: 'jetbrains'
|
|
||||||
java-package: jdk+jcef
|
|
||||||
version: '11'
|
|
||||||
os: ubuntu-latest
|
|
||||||
- distribution: 'jetbrains'
|
|
||||||
java-package: jdk+jcef
|
|
||||||
version: '17'
|
|
||||||
os: ubuntu-latest
|
|
||||||
- distribution: 'jetbrains'
|
|
||||||
java-package: jdk+jcef
|
|
||||||
version: '21'
|
|
||||||
os: ubuntu-latest
|
|
||||||
- distribution: 'jetbrains'
|
|
||||||
java-package: jre+jcef
|
|
||||||
version: '11'
|
|
||||||
os: ubuntu-latest
|
|
||||||
- distribution: 'jetbrains'
|
|
||||||
java-package: jre+jcef
|
|
||||||
version: '17'
|
|
||||||
os: ubuntu-latest
|
|
||||||
- distribution: 'jetbrains'
|
|
||||||
java-package: jre+jcef
|
|
||||||
version: '21'
|
|
||||||
os: ubuntu-latest
|
|
||||||
- distribution: 'jetbrains'
|
|
||||||
java-package: jdk+ft
|
|
||||||
version: '11'
|
|
||||||
os: ubuntu-latest
|
|
||||||
- distribution: 'jetbrains'
|
|
||||||
java-package: jdk+ft
|
|
||||||
version: '17'
|
|
||||||
os: ubuntu-latest
|
|
||||||
- distribution: 'jetbrains'
|
|
||||||
java-package: jdk+ft
|
|
||||||
version: '21'
|
|
||||||
os: ubuntu-latest
|
|
||||||
- distribution: 'jetbrains'
|
|
||||||
java-package: jre+ft
|
|
||||||
version: '11'
|
|
||||||
os: ubuntu-latest
|
|
||||||
- distribution: 'jetbrains'
|
|
||||||
java-package: jre+ft
|
|
||||||
version: '17'
|
|
||||||
os: ubuntu-latest
|
|
||||||
- distribution: 'jetbrains'
|
|
||||||
java-package: jre+ft
|
|
||||||
version: '21'
|
|
||||||
os: ubuntu-latest
|
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@ -3,7 +3,6 @@ import {HttpClient} from '@actions/http-client';
|
|||||||
import {JetBrainsDistribution} from '../../src/distributions/jetbrains/installer';
|
import {JetBrainsDistribution} from '../../src/distributions/jetbrains/installer';
|
||||||
|
|
||||||
import manifestData from '../data/jetbrains.json';
|
import manifestData from '../data/jetbrains.json';
|
||||||
import {fstat, writeFileSync} from 'fs';
|
|
||||||
|
|
||||||
describe('getAvailableVersions', () => {
|
describe('getAvailableVersions', () => {
|
||||||
let spyHttpClient: jest.SpyInstance;
|
let spyHttpClient: jest.SpyInstance;
|
||||||
@ -51,7 +50,7 @@ describe('getAvailableVersions', () => {
|
|||||||
const availableVersions = await distribution['getAvailableVersions']();
|
const availableVersions = await distribution['getAvailableVersions']();
|
||||||
expect(availableVersions).not.toBeNull();
|
expect(availableVersions).not.toBeNull();
|
||||||
expect(availableVersions.length).toBe(manifestData.length * 2);
|
expect(availableVersions.length).toBe(manifestData.length * 2);
|
||||||
}, 10_000);
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('findPackageForDownload', () => {
|
describe('findPackageForDownload', () => {
|
||||||
|
|||||||
74
dist/setup/index.js
vendored
74
dist/setup/index.js
vendored
@ -124549,7 +124549,6 @@ const path_1 = __importDefault(__nccwpck_require__(71017));
|
|||||||
const semver_1 = __importDefault(__nccwpck_require__(11383));
|
const semver_1 = __importDefault(__nccwpck_require__(11383));
|
||||||
const base_installer_1 = __nccwpck_require__(59741);
|
const base_installer_1 = __nccwpck_require__(59741);
|
||||||
const util_1 = __nccwpck_require__(92629);
|
const util_1 = __nccwpck_require__(92629);
|
||||||
const http_client_1 = __nccwpck_require__(96255);
|
|
||||||
class JetBrainsDistribution extends base_installer_1.JavaBase {
|
class JetBrainsDistribution extends base_installer_1.JavaBase {
|
||||||
constructor(installerOptions) {
|
constructor(installerOptions) {
|
||||||
super('JetBrains', installerOptions);
|
super('JetBrains', installerOptions);
|
||||||
@ -124572,7 +124571,7 @@ class JetBrainsDistribution extends base_installer_1.JavaBase {
|
|||||||
const resolvedFullVersion = satisfiedVersions.length > 0 ? satisfiedVersions[0] : null;
|
const resolvedFullVersion = satisfiedVersions.length > 0 ? satisfiedVersions[0] : null;
|
||||||
if (!resolvedFullVersion) {
|
if (!resolvedFullVersion) {
|
||||||
const availableOptions = versionsRaw
|
const availableOptions = versionsRaw
|
||||||
.map(item => `${item.tag_name} (${item.semver}+${item.build})`)
|
.map(item => item.tag_name)
|
||||||
.join(', ');
|
.join(', ');
|
||||||
const availableOptionsMessage = availableOptions
|
const availableOptionsMessage = availableOptions
|
||||||
? `\nAvailable versions: ${availableOptions}`
|
? `\nAvailable versions: ${availableOptions}`
|
||||||
@ -124625,75 +124624,44 @@ class JetBrainsDistribution extends base_installer_1.JavaBase {
|
|||||||
rawVersions.push(...paginationPage);
|
rawVersions.push(...paginationPage);
|
||||||
page_index++;
|
page_index++;
|
||||||
}
|
}
|
||||||
const versions0 = rawVersions.map((v) => __awaiter(this, void 0, void 0, function* () {
|
const versions0 = rawVersions.map(v => {
|
||||||
var _a;
|
var _a;
|
||||||
// Release tags look like one of these:
|
// Release tags look like one of these:
|
||||||
// jbr-release-21.0.3b465.3
|
// jbr-release-21.0.3b465.3
|
||||||
// jbr17-b87.7
|
|
||||||
// jb11_0_11-b87.7
|
// jb11_0_11-b87.7
|
||||||
// jbr11_0_15b2043.56
|
// jbr11_0_15b2043.56
|
||||||
// 11_0_11b1536.2
|
|
||||||
// 11_0_11-b1522
|
|
||||||
const tag = v.tag_name;
|
const tag = v.tag_name;
|
||||||
// Extract version string
|
// Extract version string
|
||||||
const vstring = tag
|
let vstring;
|
||||||
.replace('jbr-release-', '')
|
switch ((_a = tag.match(/-/g)) === null || _a === void 0 ? void 0 : _a.length) {
|
||||||
.replace('jbr', '')
|
case 2:
|
||||||
.replace('jb', '')
|
vstring = tag.substring(tag.lastIndexOf('-') + 1);
|
||||||
.replace('-', '');
|
|
||||||
const vsplit = vstring.split('b');
|
|
||||||
let semver = vsplit[0];
|
|
||||||
const build = +vsplit[1];
|
|
||||||
// Normalize semver
|
|
||||||
if (!semver.includes('.') && !semver.includes('_'))
|
|
||||||
semver = `${semver}.0.0`;
|
|
||||||
// Construct URL
|
|
||||||
let type;
|
|
||||||
switch ((_a = this.packageType) !== null && _a !== void 0 ? _a : '') {
|
|
||||||
case 'jre':
|
|
||||||
type = 'jbr';
|
|
||||||
break;
|
break;
|
||||||
case 'jdk+jcef':
|
case 1:
|
||||||
type = 'jbrsdk_jcef';
|
vstring = tag.substring(2).replace(/-/g, '');
|
||||||
break;
|
break;
|
||||||
case 'jre+jcef':
|
case undefined: // 0
|
||||||
type = 'jbr_jcef';
|
vstring = tag.substring(3);
|
||||||
break;
|
|
||||||
case 'jdk+ft':
|
|
||||||
type = 'jbrsdk_ft';
|
|
||||||
break;
|
|
||||||
case 'jre+ft':
|
|
||||||
type = 'jbr_ft';
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
type = 'jbrsdk';
|
throw new Error(`Unrecognized tag_name: ${tag}`);
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
let url = `https://cache-redirector.jetbrains.com/intellij-jbr/${type}-${semver}-${platform}-${arch}-b${build}.tar.gz`;
|
const vsplit = vstring.split('b');
|
||||||
let include = false;
|
const semver = vsplit[0];
|
||||||
const res = yield this.http.head(url);
|
const build = +vsplit[1];
|
||||||
if (res.message.statusCode === http_client_1.HttpCodes.OK) {
|
// Construct URL
|
||||||
include = true;
|
const url = `https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-${semver}-${platform}-${arch}-b${build}.tar.gz`;
|
||||||
}
|
return {
|
||||||
else {
|
|
||||||
url = `https://cache-redirector.jetbrains.com/intellij-jbr/${type}_nomod-${semver}-${platform}-${arch}-b${build}.tar.gz`;
|
|
||||||
const res2 = yield this.http.head(url);
|
|
||||||
if (res2.message.statusCode === http_client_1.HttpCodes.OK) {
|
|
||||||
include = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
const version = {
|
|
||||||
tag_name: tag,
|
tag_name: tag,
|
||||||
semver: semver.replace(/_/g, '.'),
|
semver: semver.replace(/_/g, '.'),
|
||||||
build: build,
|
build: build,
|
||||||
url: url
|
url: url
|
||||||
};
|
};
|
||||||
return {
|
});
|
||||||
item: version,
|
const versions = versions0.filter((i) => __awaiter(this, void 0, void 0, function* () {
|
||||||
include: include
|
const res = yield this.http.head(i.url);
|
||||||
};
|
return res.message.statusCode === 200;
|
||||||
}));
|
}));
|
||||||
const versions = yield Promise.all(versions0).then(res => res.filter(item => item.include).map(item => item.item));
|
|
||||||
if (core.isDebug()) {
|
if (core.isDebug()) {
|
||||||
core.startGroup('Print information about available versions');
|
core.startGroup('Print information about available versions');
|
||||||
console.timeEnd('Retrieving available versions for JBR took'); // eslint-disable-line no-console
|
console.timeEnd('Retrieving available versions for JBR took'); // eslint-disable-line no-console
|
||||||
|
|||||||
@ -173,8 +173,7 @@ steps:
|
|||||||
```
|
```
|
||||||
|
|
||||||
### JetBrains
|
### JetBrains
|
||||||
|
**NOTE:** JetBrains only provides jdk and is only available for LTS versions 11 or later. JCEF is not bundled with this distribution.
|
||||||
**NOTE:** JetBrains is only available for LTS versions on 11 or later.
|
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
steps:
|
steps:
|
||||||
@ -195,22 +194,12 @@ steps:
|
|||||||
- uses: actions/setup-java@v4
|
- uses: actions/setup-java@v4
|
||||||
with:
|
with:
|
||||||
distribution: 'jetbrains'
|
distribution: 'jetbrains'
|
||||||
java-version: '17'
|
java-version: '11'
|
||||||
package-type: 'jdk' # optional (jdk, jre, jdk+jcef, jre+jcef, jdk+ft, or jre+ft) - defaults to jdk
|
|
||||||
env:
|
env:
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
- run: java -cp java HelloWorldApp
|
- run: java -cp java HelloWorldApp
|
||||||
```
|
```
|
||||||
|
|
||||||
JetBrains Package Types (as shown in the [releases page](https://github.com/JetBrains/JetBrainsRuntime/releases/)):
|
|
||||||
|
|
||||||
- `jdk` - JBRSDK
|
|
||||||
- `jre` - JBR (Vanilla)
|
|
||||||
- `jdk+jcef` - JBRSDK with JCEF
|
|
||||||
- `jre+jcef` - JBR with JCEF
|
|
||||||
- `jdk+ft` - JBRSDK (FreeType)
|
|
||||||
- `jre+ft` - JBR (FreeType)
|
|
||||||
|
|
||||||
### GraalVM
|
### GraalVM
|
||||||
**NOTE:** Oracle GraalVM is only available for JDK 17 and later.
|
**NOTE:** Oracle GraalVM is only available for JDK 17 and later.
|
||||||
|
|
||||||
|
|||||||
@ -14,7 +14,6 @@ import {
|
|||||||
} from '../base-models';
|
} from '../base-models';
|
||||||
import {extractJdkFile, isVersionSatisfies} from '../../util';
|
import {extractJdkFile, isVersionSatisfies} from '../../util';
|
||||||
import {OutgoingHttpHeaders} from 'http';
|
import {OutgoingHttpHeaders} from 'http';
|
||||||
import {HttpCodes} from '@actions/http-client';
|
|
||||||
|
|
||||||
export class JetBrainsDistribution extends JavaBase {
|
export class JetBrainsDistribution extends JavaBase {
|
||||||
constructor(installerOptions: JavaInstallerOptions) {
|
constructor(installerOptions: JavaInstallerOptions) {
|
||||||
@ -45,7 +44,7 @@ export class JetBrainsDistribution extends JavaBase {
|
|||||||
satisfiedVersions.length > 0 ? satisfiedVersions[0] : null;
|
satisfiedVersions.length > 0 ? satisfiedVersions[0] : null;
|
||||||
if (!resolvedFullVersion) {
|
if (!resolvedFullVersion) {
|
||||||
const availableOptions = versionsRaw
|
const availableOptions = versionsRaw
|
||||||
.map(item => `${item.tag_name} (${item.semver}+${item.build})`)
|
.map(item => item.tag_name)
|
||||||
.join(', ');
|
.join(', ');
|
||||||
const availableOptionsMessage = availableOptions
|
const availableOptionsMessage = availableOptions
|
||||||
? `\nAvailable versions: ${availableOptions}`
|
? `\nAvailable versions: ${availableOptions}`
|
||||||
@ -123,84 +122,49 @@ export class JetBrainsDistribution extends JavaBase {
|
|||||||
page_index++;
|
page_index++;
|
||||||
}
|
}
|
||||||
|
|
||||||
const versions0 = rawVersions.map(async v => {
|
const versions0 = rawVersions.map(v => {
|
||||||
// Release tags look like one of these:
|
// Release tags look like one of these:
|
||||||
// jbr-release-21.0.3b465.3
|
// jbr-release-21.0.3b465.3
|
||||||
// jbr17-b87.7
|
|
||||||
// jb11_0_11-b87.7
|
// jb11_0_11-b87.7
|
||||||
// jbr11_0_15b2043.56
|
// jbr11_0_15b2043.56
|
||||||
// 11_0_11b1536.2
|
|
||||||
// 11_0_11-b1522
|
|
||||||
const tag = v.tag_name;
|
const tag = v.tag_name;
|
||||||
|
|
||||||
// Extract version string
|
// Extract version string
|
||||||
const vstring = tag
|
let vstring;
|
||||||
.replace('jbr-release-', '')
|
|
||||||
.replace('jbr', '')
|
|
||||||
.replace('jb', '')
|
|
||||||
.replace('-', '');
|
|
||||||
|
|
||||||
const vsplit = vstring.split('b');
|
switch (tag.match(/-/g)?.length) {
|
||||||
let semver = vsplit[0];
|
case 2:
|
||||||
const build = +vsplit[1];
|
vstring = tag.substring(tag.lastIndexOf('-') + 1);
|
||||||
|
|
||||||
// Normalize semver
|
|
||||||
if (!semver.includes('.') && !semver.includes('_'))
|
|
||||||
semver = `${semver}.0.0`;
|
|
||||||
|
|
||||||
// Construct URL
|
|
||||||
let type: string;
|
|
||||||
switch (this.packageType ?? '') {
|
|
||||||
case 'jre':
|
|
||||||
type = 'jbr';
|
|
||||||
break;
|
break;
|
||||||
case 'jdk+jcef':
|
case 1:
|
||||||
type = 'jbrsdk_jcef';
|
vstring = tag.substring(2).replace(/-/g, '');
|
||||||
break;
|
break;
|
||||||
case 'jre+jcef':
|
case undefined: // 0
|
||||||
type = 'jbr_jcef';
|
vstring = tag.substring(3);
|
||||||
break;
|
|
||||||
case 'jdk+ft':
|
|
||||||
type = 'jbrsdk_ft';
|
|
||||||
break;
|
|
||||||
case 'jre+ft':
|
|
||||||
type = 'jbr_ft';
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
type = 'jbrsdk';
|
throw new Error(`Unrecognized tag_name: ${tag}`);
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
let url = `https://cache-redirector.jetbrains.com/intellij-jbr/${type}-${semver}-${platform}-${arch}-b${build}.tar.gz`;
|
const vsplit = vstring.split('b');
|
||||||
let include = false;
|
const semver = vsplit[0];
|
||||||
|
const build = +vsplit[1];
|
||||||
|
|
||||||
const res = await this.http.head(url);
|
// Construct URL
|
||||||
if (res.message.statusCode === HttpCodes.OK) {
|
const url = `https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-${semver}-${platform}-${arch}-b${build}.tar.gz`;
|
||||||
include = true;
|
|
||||||
} else {
|
|
||||||
url = `https://cache-redirector.jetbrains.com/intellij-jbr/${type}_nomod-${semver}-${platform}-${arch}-b${build}.tar.gz`;
|
|
||||||
const res2 = await this.http.head(url);
|
|
||||||
if (res2.message.statusCode === HttpCodes.OK) {
|
|
||||||
include = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const version = {
|
return {
|
||||||
tag_name: tag,
|
tag_name: tag,
|
||||||
semver: semver.replace(/_/g, '.'),
|
semver: semver.replace(/_/g, '.'),
|
||||||
build: build,
|
build: build,
|
||||||
url: url
|
url: url
|
||||||
} as IJetBrainsVersion;
|
} as IJetBrainsVersion;
|
||||||
|
|
||||||
return {
|
|
||||||
item: version,
|
|
||||||
include: include
|
|
||||||
};
|
|
||||||
});
|
});
|
||||||
|
|
||||||
const versions = await Promise.all(versions0).then(res =>
|
const versions = versions0.filter(async i => {
|
||||||
res.filter(item => item.include).map(item => item.item)
|
const res = await this.http.head(i.url);
|
||||||
);
|
return res.message.statusCode === 200;
|
||||||
|
});
|
||||||
|
|
||||||
if (core.isDebug()) {
|
if (core.isDebug()) {
|
||||||
core.startGroup('Print information about available versions');
|
core.startGroup('Print information about available versions');
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user