mirror of
https://github.com/actions/setup-java.git
synced 2025-04-20 09:56:46 +00:00
add initial logic
This commit is contained in:
parent
aa53851224
commit
37bedf2b88
4 changed files with 255 additions and 77 deletions
|
@ -59,6 +59,9 @@ inputs:
|
||||||
job-status:
|
job-status:
|
||||||
description: 'Workaround to pass job status to post job step. This variable is not intended for manual setting'
|
description: 'Workaround to pass job status to post job step. This variable is not intended for manual setting'
|
||||||
default: ${{ job.status }}
|
default: ${{ job.status }}
|
||||||
|
token:
|
||||||
|
description: Used to pull java versions from setup-java. Since there's a default, this is typically not supplied by the user.
|
||||||
|
default: ${{ github.token }}
|
||||||
outputs:
|
outputs:
|
||||||
distribution:
|
distribution:
|
||||||
description: 'Distribution of Java that has been installed'
|
description: 'Distribution of Java that has been installed'
|
||||||
|
|
68
dist/setup/index.js
vendored
68
dist/setup/index.js
vendored
|
@ -102398,7 +102398,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
||||||
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
||||||
exports.MicrosoftDistributions = void 0;
|
exports.MicrosoftDistributions = void 0;
|
||||||
const base_installer_1 = __nccwpck_require__(9741);
|
const base_installer_1 = __nccwpck_require__(9741);
|
||||||
const semver_1 = __importDefault(__nccwpck_require__(1383));
|
|
||||||
const util_1 = __nccwpck_require__(2629);
|
const util_1 = __nccwpck_require__(2629);
|
||||||
const core = __importStar(__nccwpck_require__(2186));
|
const core = __importStar(__nccwpck_require__(2186));
|
||||||
const tc = __importStar(__nccwpck_require__(7784));
|
const tc = __importStar(__nccwpck_require__(7784));
|
||||||
|
@ -102433,49 +102432,44 @@ class MicrosoftDistributions extends base_installer_1.JavaBase {
|
||||||
throw new Error('Microsoft Build of OpenJDK provides only the `jdk` package type');
|
throw new Error('Microsoft Build of OpenJDK provides only the `jdk` package type');
|
||||||
}
|
}
|
||||||
const availableVersionsRaw = yield this.getAvailableVersions();
|
const availableVersionsRaw = yield this.getAvailableVersions();
|
||||||
const opts = this.getPlatformOption();
|
if (!availableVersionsRaw) {
|
||||||
const availableVersions = availableVersionsRaw.map(item => ({
|
throw new Error('Could not load manifest for Microsoft Build of OpenJDK');
|
||||||
url: `https://aka.ms/download-jdk/microsoft-jdk-${item.version.join('.')}-${opts.os}-${this.architecture}.${opts.archive}`,
|
|
||||||
version: this.convertVersionToSemver(item)
|
|
||||||
}));
|
|
||||||
const satisfiedVersion = availableVersions
|
|
||||||
.filter(item => util_1.isVersionSatisfies(range, item.version))
|
|
||||||
.sort((a, b) => -semver_1.default.compareBuild(a.version, b.version))[0];
|
|
||||||
if (!satisfiedVersion) {
|
|
||||||
const availableOptions = availableVersions.map(item => item.version).join(', ');
|
|
||||||
const availableOptionsMessage = availableOptions
|
|
||||||
? `\nAvailable versions: ${availableOptions}`
|
|
||||||
: '';
|
|
||||||
throw new Error(`Could not find satisfied version for SemVer ${range}. ${availableOptionsMessage}`);
|
|
||||||
}
|
}
|
||||||
return satisfiedVersion;
|
const foundRelease = yield tc.findFromManifest(range, true, availableVersionsRaw, this.architecture);
|
||||||
|
// const opts = this.getPlatformOption();
|
||||||
|
// const availableVersions = availableVersionsRaw.map(item => ({
|
||||||
|
// url: `https://aka.ms/download-jdk/microsoft-jdk-${item.version.join('.')}-${opts.os}-${
|
||||||
|
// this.architecture // https://aka.ms/download-jdk/microsoft-jdk-17.0.3-linux-aarch64.tar.gz
|
||||||
|
// }.${opts.archive}`,
|
||||||
|
// version: this.convertVersionToSemver(item)
|
||||||
|
// }));
|
||||||
|
// const satisfiedVersion = availableVersions
|
||||||
|
// .filter(item => isVersionSatisfies(range, item.version))
|
||||||
|
// .sort((a, b) => -semver.compareBuild(a.version, b.version))[0];
|
||||||
|
// if (!satisfiedVersion) {
|
||||||
|
// const availableOptions = availableVersions.map(item => item.version).join(', ');
|
||||||
|
// const availableOptionsMessage = availableOptions
|
||||||
|
// ? `\nAvailable versions: ${availableOptions}`
|
||||||
|
// : '';
|
||||||
|
// throw new Error(
|
||||||
|
// `Could not find satisfied version for SemVer ${range}. ${availableOptionsMessage}`
|
||||||
|
// );
|
||||||
|
// }
|
||||||
|
if (!foundRelease) {
|
||||||
|
throw new Error(`Could not find satisfied version for SemVer ${range}. ${availableVersionsRaw
|
||||||
|
.map(item => item.version)
|
||||||
|
.join(', ')}`);
|
||||||
|
}
|
||||||
|
return { url: foundRelease.release_url, version: foundRelease.version };
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
getAvailableVersions() {
|
getAvailableVersions() {
|
||||||
return __awaiter(this, void 0, void 0, function* () {
|
return __awaiter(this, void 0, void 0, function* () {
|
||||||
// TODO get these dynamically!
|
// TODO get these dynamically!
|
||||||
// We will need Microsoft to add an endpoint where we can query for versions.
|
// We will need Microsoft to add an endpoint where we can query for versions.
|
||||||
const jdkVersions = [
|
const token = core.getInput('token');
|
||||||
{
|
const manifest = (yield this.http.getJson('https://github.com/dmitry-shibanov/setup-java/tree/main', { authorization: token })).result;
|
||||||
version: [17, 0, 3]
|
return manifest;
|
||||||
},
|
|
||||||
{
|
|
||||||
version: [17, 0, 1, 12, 1]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
version: [16, 0, 2, 7, 1]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
version: [11, 0, 15]
|
|
||||||
}
|
|
||||||
];
|
|
||||||
// M1 is only supported for Java 16 & 17
|
|
||||||
if (process.platform !== 'darwin' || this.architecture !== 'aarch64') {
|
|
||||||
jdkVersions.push({
|
|
||||||
version: [11, 0, 13, 8, 1]
|
|
||||||
});
|
|
||||||
}
|
|
||||||
return jdkVersions;
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
getPlatformOption(platform = process.platform /* for testing */) {
|
getPlatformOption(platform = process.platform /* for testing */) {
|
||||||
|
|
176
microsoft-build-of-openjdk-versions.json
Normal file
176
microsoft-build-of-openjdk-versions.json
Normal file
|
@ -0,0 +1,176 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"version": "17.0.3",
|
||||||
|
"stable": true,
|
||||||
|
"files": [
|
||||||
|
{
|
||||||
|
"filename": "microsoft-jdk-17.0.3-macos-x64.tar.gz",
|
||||||
|
"arch": "x64",
|
||||||
|
"platform": "darwin",
|
||||||
|
"download_url": "https://aka.ms/download-jdk/microsoft-jdk-17.0.3-macos-x64.tar.gz"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename": "microsoft-jdk-17.0.3-linux-x64.tar.gz",
|
||||||
|
"arch": "x64",
|
||||||
|
"platform": "linux",
|
||||||
|
"download_url": "https://aka.ms/download-jdk/microsoft-jdk-17.0.3-linux-x64.tar.gz"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename": "microsoft-jdk-17.0.3-windows-x64.zip",
|
||||||
|
"arch": "x64",
|
||||||
|
"platform": "win32",
|
||||||
|
"download_url": "https://aka.ms/download-jdk/microsoft-jdk-17.0.3-windows-x64.zip"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename": "microsoft-jdk-17.0.3-macos-aarch64.tar.gz",
|
||||||
|
"arch": "aarch64",
|
||||||
|
"platform": "darwin",
|
||||||
|
"download_url": "https://aka.ms/download-jdk/microsoft-jdk-17.0.3-macos-aarch64.tar.gz"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename": "microsoft-jdk-17.0.3-linux-aarch64.tar.gz",
|
||||||
|
"arch": "aarch64",
|
||||||
|
"platform": "linux",
|
||||||
|
"download_url": "https://aka.ms/download-jdk/microsoft-jdk-17.0.3-linux-aarch64.tar.gz"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"version": "17.0.1+12.1",
|
||||||
|
"stable": true,
|
||||||
|
"files": [
|
||||||
|
{
|
||||||
|
"filename": "microsoft-jdk-17.0.1.12.1-macos-x64.tar.gz",
|
||||||
|
"arch": "x64",
|
||||||
|
"platform": "darwin",
|
||||||
|
"download_url": "https://aka.ms/download-jdk/microsoft-jdk-17.0.1.12.1-macos-x64.tar.gz"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename": "microsoft-jdk-17.0.1.12.1-linux-x64.tar.gz",
|
||||||
|
"arch": "x64",
|
||||||
|
"platform": "linux",
|
||||||
|
"download_url": "https://aka.ms/download-jdk/microsoft-jdk-17.0.1.12.1-linux-x64.tar.gz"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename": "microsoft-jdk-17.0.1.12.1-windows-x64.zip",
|
||||||
|
"arch": "x64",
|
||||||
|
"platform": "win32",
|
||||||
|
"download_url": "https://aka.ms/download-jdk/microsoft-jdk-17.0.1.12.1-windows-x64.zip"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename": "microsoft-jdk-17.0.1.12.1-macos-aarch64.tar.gz",
|
||||||
|
"arch": "aarch64",
|
||||||
|
"platform": "darwin",
|
||||||
|
"download_url": "https://aka.ms/download-jdk/microsoft-jdk-17.0.1.12.1-macos-aarch64.tar.gz"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename": "microsoft-jdk-17.0.1.12.1-linux-aarch64.tar.gz",
|
||||||
|
"arch": "aarch64",
|
||||||
|
"platform": "linux",
|
||||||
|
"download_url": "https://aka.ms/download-jdk/microsoft-jdk-17.0.1.12.1-linux-aarch64.tar.gz"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"version": "16.0.2+7.1",
|
||||||
|
"stable": true,
|
||||||
|
"files": [
|
||||||
|
{
|
||||||
|
"filename": "microsoft-jdk-16.0.2+7.1-macos-x64.tar.gz",
|
||||||
|
"arch": "x64",
|
||||||
|
"platform": "darwin",
|
||||||
|
"download_url": "https://aka.ms/download-jdk/microsoft-jdk-16.0.2+7.1-macos-x64.tar.gz"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename": "microsoft-jdk-16.0.2+7.1-linux-x64.tar.gz",
|
||||||
|
"arch": "x64",
|
||||||
|
"platform": "linux",
|
||||||
|
"download_url": "https://aka.ms/download-jdk/microsoft-jdk-16.0.2+7.1-linux-x64.tar.gz"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename": "microsoft-jdk-16.0.2+7.1-windows-x64.zip",
|
||||||
|
"arch": "x64",
|
||||||
|
"platform": "win32",
|
||||||
|
"download_url": "https://aka.ms/download-jdk/microsoft-jdk-16.0.2+7.1-windows-x64.zip"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename": "microsoft-jdk-16.0.2+7.1-macos-aarch64.tar.gz",
|
||||||
|
"arch": "aarch64",
|
||||||
|
"platform": "darwin",
|
||||||
|
"download_url": "https://aka.ms/download-jdk/microsoft-jdk-16.0.2+7.1-macos-aarch64.tar.gz"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename": "microsoft-jdk-16.0.2+7.1-linux-aarch64.tar.gz",
|
||||||
|
"arch": "aarch64",
|
||||||
|
"platform": "linux",
|
||||||
|
"download_url": "https://aka.ms/download-jdk/microsoft-jdk-16.0.2+7.1-linux-aarch64.tar.gz"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"version": "11.0.15",
|
||||||
|
"stable": true,
|
||||||
|
"files": [
|
||||||
|
{
|
||||||
|
"filename": "microsoft-jdk-11.0.15-macos-x64.tar.gz",
|
||||||
|
"arch": "x64",
|
||||||
|
"platform": "darwin",
|
||||||
|
"download_url": "https://aka.ms/download-jdk/microsoft-jdk-11.0.15-macos-x64.tar.gz"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename": "microsoft-jdk-11.0.15-linux-x64.tar.gz",
|
||||||
|
"arch": "x64",
|
||||||
|
"platform": "linux",
|
||||||
|
"download_url": "https://aka.ms/download-jdk/microsoft-jdk-11.0.15-linux-x64.tar.gz"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename": "microsoft-jdk-11.0.15-windows-x64.zip",
|
||||||
|
"arch": "x64",
|
||||||
|
"platform": "win32",
|
||||||
|
"download_url": "https://aka.ms/download-jdk/microsoft-jdk-11.0.15-windows-x64.zip"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename": "microsoft-jdk-11.0.15-macos-aarch64.tar.gz",
|
||||||
|
"arch": "aarch64",
|
||||||
|
"platform": "darwin",
|
||||||
|
"download_url": "https://aka.ms/download-jdk/microsoft-jdk-11.0.15-macos-aarch64.tar.gz"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename": "microsoft-jdk-11.0.15-linux-aarch64.tar.gz",
|
||||||
|
"arch": "aarch64",
|
||||||
|
"platform": "linux",
|
||||||
|
"download_url": "https://aka.ms/download-jdk/microsoft-jdk-11.0.15-linux-aarch64.tar.gz"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"version": "11.0.13+8.1",
|
||||||
|
"stable": true,
|
||||||
|
"files": [
|
||||||
|
{
|
||||||
|
"filename": "microsoft-jdk-11.0.13+8.1-macos-x64.tar.gz",
|
||||||
|
"arch": "x64",
|
||||||
|
"platform": "darwin",
|
||||||
|
"download_url": "https://aka.ms/download-jdk/microsoft-jdk-11.0.13+8.1-macos-x64.tar.gz"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename": "microsoft-jdk-11.0.13+8.1-linux-x64.tar.gz",
|
||||||
|
"arch": "x64",
|
||||||
|
"platform": "linux",
|
||||||
|
"download_url": "https://aka.ms/download-jdk/microsoft-jdk-11.0.13+8.1-linux-x64.tar.gz"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename": "microsoft-jdk-11.0.13+8.1-windows-x64.zip",
|
||||||
|
"arch": "x64",
|
||||||
|
"platform": "win32",
|
||||||
|
"download_url": "https://aka.ms/download-jdk/microsoft-jdk-11.0.13+8.1-windows-x64.zip"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename": "microsoft-jdk-11.0.13+8.1-linux-aarch64.tar.gz",
|
||||||
|
"arch": "aarch64",
|
||||||
|
"platform": "linux",
|
||||||
|
"download_url": "https://aka.ms/download-jdk/microsoft-jdk-11.0.13+8.1-linux-aarch64.tar.gz"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
|
@ -51,57 +51,62 @@ export class MicrosoftDistributions extends JavaBase {
|
||||||
|
|
||||||
const availableVersionsRaw = await this.getAvailableVersions();
|
const availableVersionsRaw = await this.getAvailableVersions();
|
||||||
|
|
||||||
const opts = this.getPlatformOption();
|
if (!availableVersionsRaw) {
|
||||||
const availableVersions = availableVersionsRaw.map(item => ({
|
throw new Error('Could not load manifest for Microsoft Build of OpenJDK');
|
||||||
url: `https://aka.ms/download-jdk/microsoft-jdk-${item.version.join('.')}-${opts.os}-${
|
}
|
||||||
|
|
||||||
|
const foundRelease = await tc.findFromManifest(
|
||||||
|
range,
|
||||||
|
true,
|
||||||
|
availableVersionsRaw,
|
||||||
this.architecture
|
this.architecture
|
||||||
}.${opts.archive}`,
|
);
|
||||||
version: this.convertVersionToSemver(item)
|
|
||||||
}));
|
|
||||||
|
|
||||||
const satisfiedVersion = availableVersions
|
// const opts = this.getPlatformOption();
|
||||||
.filter(item => isVersionSatisfies(range, item.version))
|
// const availableVersions = availableVersionsRaw.map(item => ({
|
||||||
.sort((a, b) => -semver.compareBuild(a.version, b.version))[0];
|
// url: `https://aka.ms/download-jdk/microsoft-jdk-${item.version.join('.')}-${opts.os}-${
|
||||||
|
// this.architecture // https://aka.ms/download-jdk/microsoft-jdk-17.0.3-linux-aarch64.tar.gz
|
||||||
|
// }.${opts.archive}`,
|
||||||
|
// version: this.convertVersionToSemver(item)
|
||||||
|
// }));
|
||||||
|
|
||||||
if (!satisfiedVersion) {
|
// const satisfiedVersion = availableVersions
|
||||||
const availableOptions = availableVersions.map(item => item.version).join(', ');
|
// .filter(item => isVersionSatisfies(range, item.version))
|
||||||
const availableOptionsMessage = availableOptions
|
// .sort((a, b) => -semver.compareBuild(a.version, b.version))[0];
|
||||||
? `\nAvailable versions: ${availableOptions}`
|
|
||||||
: '';
|
// if (!satisfiedVersion) {
|
||||||
|
// const availableOptions = availableVersions.map(item => item.version).join(', ');
|
||||||
|
// const availableOptionsMessage = availableOptions
|
||||||
|
// ? `\nAvailable versions: ${availableOptions}`
|
||||||
|
// : '';
|
||||||
|
// throw new Error(
|
||||||
|
// `Could not find satisfied version for SemVer ${range}. ${availableOptionsMessage}`
|
||||||
|
// );
|
||||||
|
// }
|
||||||
|
|
||||||
|
if (!foundRelease) {
|
||||||
throw new Error(
|
throw new Error(
|
||||||
`Could not find satisfied version for SemVer ${range}. ${availableOptionsMessage}`
|
`Could not find satisfied version for SemVer ${range}. ${availableVersionsRaw
|
||||||
|
.map(item => item.version)
|
||||||
|
.join(', ')}`
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
return satisfiedVersion;
|
return { url: foundRelease.release_url, version: foundRelease.version };
|
||||||
}
|
}
|
||||||
|
|
||||||
private async getAvailableVersions(): Promise<MicrosoftVersion[]> {
|
private async getAvailableVersions(): Promise<tc.IToolRelease[] | null> {
|
||||||
// TODO get these dynamically!
|
// TODO get these dynamically!
|
||||||
// We will need Microsoft to add an endpoint where we can query for versions.
|
// We will need Microsoft to add an endpoint where we can query for versions.
|
||||||
const jdkVersions = [
|
const token = core.getInput('token');
|
||||||
{
|
const manifest = (
|
||||||
version: [17, 0, 3]
|
await this.http.getJson<tc.IToolRelease[]>(
|
||||||
},
|
'https://github.com/dmitry-shibanov/setup-java/tree/main',
|
||||||
{
|
{ authorization: token }
|
||||||
version: [17, 0, 1, 12, 1]
|
)
|
||||||
},
|
).result;
|
||||||
{
|
|
||||||
version: [16, 0, 2, 7, 1]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
version: [11, 0, 15]
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
// M1 is only supported for Java 16 & 17
|
return manifest;
|
||||||
if (process.platform !== 'darwin' || this.architecture !== 'aarch64') {
|
|
||||||
jdkVersions.push({
|
|
||||||
version: [11, 0, 13, 8, 1]
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
return jdkVersions;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private getPlatformOption(
|
private getPlatformOption(
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue