1
0

Make the Adoptopenjdk package type look at the Temurin repo first for latest assets (#522)

* Make the Adoptopenjdk package type look at the Temurin repo first for latest assets

* Address Copilot code review comments

- Use strict equality (===, !==) instead of loose equality (==, !=) for all comparisons
- Properly handle caught errors with instanceof type narrowing before accessing properties
- Only fall back to legacy AdoptOpenJDK for specific version-not-found errors
- Rethrow unexpected errors to avoid masking real issues (network failures, rate limits, etc.)
- Fix error message check to match actual error text ('No matching version found')
- Remove unnecessary undefined check since method return type is never undefined
- Add @internal JSDoc annotation to TemurinDistribution.findPackageForDownload()
- Update tests to properly mock Temurin lookup failures for fallback behavior testing
- Rebuild dist files

* Always fall back to legacy AdoptOpenJDK but log all Temurin failures

- Change error handling to gracefully fall back for all errors, not just version-not-found
- Log version-not-found errors as notices with migration guidance
- Log other Temurin failures as debug messages for troubleshooting
- Improves resilience: users always get a result even if Temurin API has issues
- Maintains visibility: failures are still logged for debugging

* Fixes from review

* Fixes from review

* Fixes from review

* Regenerate dist
This commit is contained in:
John
2026-06-12 16:30:59 +01:00
committed by GitHub
parent 43120bc3c3
commit b24df5bba5
6 changed files with 163 additions and 20 deletions
+44 -2
View File
@@ -77815,17 +77815,54 @@ const path_1 = __importDefault(__nccwpck_require__(71017));
const semver_1 = __importDefault(__nccwpck_require__(11383));
const base_installer_1 = __nccwpck_require__(59741);
const util_1 = __nccwpck_require__(92629);
const installer_1 = __nccwpck_require__(18579);
var AdoptImplementation;
(function (AdoptImplementation) {
AdoptImplementation["Hotspot"] = "Hotspot";
AdoptImplementation["OpenJ9"] = "OpenJ9";
})(AdoptImplementation || (exports.AdoptImplementation = AdoptImplementation = {}));
class AdoptDistribution extends base_installer_1.JavaBase {
constructor(installerOptions, jvmImpl) {
constructor(installerOptions, jvmImpl, temurinDistribution = null) {
super(`Adopt-${jvmImpl}`, installerOptions);
this.jvmImpl = jvmImpl;
if (temurinDistribution !== null &&
jvmImpl !== AdoptImplementation.Hotspot) {
throw new Error('Only Hotspot JVM is supported by Temurin.');
}
// Only use the temurin repo for Hotspot JVMs
this.temurinDistribution =
temurinDistribution !== null && temurinDistribution !== void 0 ? temurinDistribution : (jvmImpl === AdoptImplementation.Hotspot
? new installer_1.TemurinDistribution(installerOptions, installer_1.TemurinImplementation.Hotspot)
: null);
}
findPackageForDownload(version) {
return __awaiter(this, void 0, void 0, function* () {
if (this.jvmImpl === AdoptImplementation.Hotspot) {
core.notice("AdoptOpenJDK has moved to Eclipse Temurin https://github.com/actions/setup-java#supported-distributions please consider changing to the 'temurin' distribution type in your setup-java configuration.");
}
if (this.jvmImpl === AdoptImplementation.Hotspot &&
this.temurinDistribution !== null) {
try {
return yield this.temurinDistribution.findPackageForDownload(version);
}
catch (error) {
// Log the failure but always fall back to legacy AdoptOpenJDK for resilience
const errorMessage = error instanceof Error ? error.message : String(error);
if (error instanceof Error && error.name === 'VersionNotFoundError') {
core.notice('The JVM you are looking for could not be found in the Temurin repository, this likely indicates ' +
'that you are using an out of date version of Java, consider updating and moving to using the Temurin distribution type in setup-java.');
}
else {
// Log other errors for debugging but gracefully fall back
core.debug(`Temurin lookup failed: ${errorMessage}. Falling back to AdoptOpenJDK API.`);
}
}
}
// failed to find a Temurin version, so fall back to AdoptOpenJDK
return this.findPackageForDownloadOldAdoptOpenJdk(version);
});
}
findPackageForDownloadOldAdoptOpenJdk(version) {
return __awaiter(this, void 0, void 0, function* () {
const availableVersionsRaw = yield this.getAvailableVersions();
const availableVersionsWithBinaries = availableVersionsRaw
@@ -78223,7 +78260,9 @@ class JavaBase {
parts.push(`(showing first ${maxVersionsToShow} of ${availableVersions.length} versions, enable debug mode to see all)`);
}
}
return new Error(parts.join('\n'));
const error = new Error(parts.join('\n'));
error.name = 'VersionNotFoundError';
return error;
}
setJavaDefault(version, toolPath) {
const majorVersion = version.split('.')[0];
@@ -80195,6 +80234,9 @@ class TemurinDistribution extends base_installer_1.JavaBase {
super(`Temurin-${jvmImpl}`, installerOptions);
this.jvmImpl = jvmImpl;
}
/**
* @internal For cross-distribution reuse only. Not intended as a public API.
*/
findPackageForDownload(version) {
return __awaiter(this, void 0, void 0, function* () {
const availableVersionsRaw = yield this.getAvailableVersions();