add initial logic

This commit is contained in:
Dmitry Shibanov 2022-09-05 14:14:23 +02:00
parent aa53851224
commit 37bedf2b88
4 changed files with 255 additions and 77 deletions

View file

@ -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
View file

@ -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 */) {

View 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"
}
]
}
]

View file

@ -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}-${ }
this.architecture
}.${opts.archive}`,
version: this.convertVersionToSemver(item)
}));
const satisfiedVersion = availableVersions const foundRelease = await tc.findFromManifest(
.filter(item => isVersionSatisfies(range, item.version)) range,
.sort((a, b) => -semver.compareBuild(a.version, b.version))[0]; true,
availableVersionsRaw,
this.architecture
);
if (!satisfiedVersion) { // const opts = this.getPlatformOption();
const availableOptions = availableVersions.map(item => item.version).join(', '); // const availableVersions = availableVersionsRaw.map(item => ({
const availableOptionsMessage = availableOptions // url: `https://aka.ms/download-jdk/microsoft-jdk-${item.version.join('.')}-${opts.os}-${
? `\nAvailable versions: ${availableOptions}` // 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( 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(