This reverts commit 6cdf39a6b6d2b0dd01e76d547cb9d448ccdd4f7c. Co-authored-by: Brian Cristante <33549821+brcrista@users.noreply.github.com>
This commit is contained in:
		
							parent
							
								
									dcd29da2fa
								
							
						
					
					
						commit
						c3ac5dd0ed
					
				
							
								
								
									
										14
									
								
								.github/workflows/e2e-versions.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										14
									
								
								.github/workflows/e2e-versions.yml
									
									
									
									
										vendored
									
									
								
							| @ -25,16 +25,6 @@ jobs: | |||||||
|         exclude: |         exclude: | ||||||
|         - distribution: microsoft |         - distribution: microsoft | ||||||
|           version: 8 |           version: 8 | ||||||
|         include: |  | ||||||
|         - distribution: oracle |  | ||||||
|           os: macos-latest |  | ||||||
|           version: 17 |  | ||||||
|         - distribution: oracle |  | ||||||
|           os: windows-latest |  | ||||||
|           version: 19 |  | ||||||
|         - distribution: oracle |  | ||||||
|           os: ubuntu-latest |  | ||||||
|           version: 19 |  | ||||||
|     steps: |     steps: | ||||||
|       - name: Checkout |       - name: Checkout | ||||||
|         uses: actions/checkout@v3 |         uses: actions/checkout@v3 | ||||||
| @ -61,10 +51,6 @@ jobs: | |||||||
|         - '11.0' |         - '11.0' | ||||||
|         - '8.0.302' |         - '8.0.302' | ||||||
|         - '16.0.2+7' |         - '16.0.2+7' | ||||||
|         include: |  | ||||||
|         - distribution: oracle |  | ||||||
|           os: ubuntu-latest |  | ||||||
|           version: '19.0.1' |  | ||||||
|     steps: |     steps: | ||||||
|       - name: Checkout |       - name: Checkout | ||||||
|         uses: actions/checkout@v3 |         uses: actions/checkout@v3 | ||||||
|  | |||||||
| @ -99,7 +99,6 @@ Currently, the following distributions are supported: | |||||||
| | `liberica` | Liberica JDK | [Link](https://bell-sw.com/) | [Link](https://bell-sw.com/liberica_eula/) | | | `liberica` | Liberica JDK | [Link](https://bell-sw.com/) | [Link](https://bell-sw.com/liberica_eula/) | | ||||||
| | `microsoft` | Microsoft Build of OpenJDK | [Link](https://www.microsoft.com/openjdk) | [Link](https://docs.microsoft.com/java/openjdk/faq) | | `microsoft` | Microsoft Build of OpenJDK | [Link](https://www.microsoft.com/openjdk) | [Link](https://docs.microsoft.com/java/openjdk/faq) | ||||||
| | `corretto` | Amazon Corretto Build of OpenJDK | [Link](https://aws.amazon.com/corretto/) | [Link](https://aws.amazon.com/corretto/faqs/) | | `corretto` | Amazon Corretto Build of OpenJDK | [Link](https://aws.amazon.com/corretto/) | [Link](https://aws.amazon.com/corretto/faqs/) | ||||||
| | `oracle` | Oracle JDK | [Link](https://www.oracle.com/java/technologies/downloads/) | [Link](https://java.com/freeuselicense) |  | ||||||
| 
 | 
 | ||||||
| **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. | **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. | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -1,97 +0,0 @@ | |||||||
| import { OracleDistribution } from '../../src/distributions/oracle/installer'; |  | ||||||
| import os from 'os'; |  | ||||||
| import * as core from '@actions/core'; |  | ||||||
| import { getDownloadArchiveExtension } from '../../src/util'; |  | ||||||
| 
 |  | ||||||
| describe('findPackageForDownload', () => { |  | ||||||
|   let distribution: OracleDistribution; |  | ||||||
|   let spyDebug: jest.SpyInstance; |  | ||||||
| 
 |  | ||||||
|   beforeEach(() => { |  | ||||||
|     distribution = new OracleDistribution({ |  | ||||||
|       version: '', |  | ||||||
|       architecture: 'x64', |  | ||||||
|       packageType: 'jdk', |  | ||||||
|       checkLatest: false |  | ||||||
|     }); |  | ||||||
| 
 |  | ||||||
|     spyDebug = jest.spyOn(core, 'debug'); |  | ||||||
|     spyDebug.mockImplementation(() => {}); |  | ||||||
|   }); |  | ||||||
| 
 |  | ||||||
|   it.each([ |  | ||||||
|     [ |  | ||||||
|       '19', |  | ||||||
|       '19', |  | ||||||
|       'https://download.oracle.com/java/19/latest/jdk-19_{{OS_TYPE}}-x64_bin.{{ARCHIVE_TYPE}}' |  | ||||||
|     ], |  | ||||||
|     [ |  | ||||||
|       '19.0.1', |  | ||||||
|       '19.0.1', |  | ||||||
|       'https://download.oracle.com/java/19/archive/jdk-19.0.1_{{OS_TYPE}}-x64_bin.{{ARCHIVE_TYPE}}' |  | ||||||
|     ], |  | ||||||
|     [ |  | ||||||
|       '18.0.2.1', |  | ||||||
|       '18.0.2.1', |  | ||||||
|       'https://download.oracle.com/java/18/archive/jdk-18.0.2.1_{{OS_TYPE}}-x64_bin.{{ARCHIVE_TYPE}}' |  | ||||||
|     ], |  | ||||||
|     [ |  | ||||||
|       '17', |  | ||||||
|       '17', |  | ||||||
|       'https://download.oracle.com/java/17/latest/jdk-17_{{OS_TYPE}}-x64_bin.{{ARCHIVE_TYPE}}' |  | ||||||
|     ], |  | ||||||
|     [ |  | ||||||
|       '17.0.1', |  | ||||||
|       '17.0.1', |  | ||||||
|       'https://download.oracle.com/java/17/archive/jdk-17.0.1_{{OS_TYPE}}-x64_bin.{{ARCHIVE_TYPE}}' |  | ||||||
|     ] |  | ||||||
|   ])('version is %s -> %s', async (input, expectedVersion, expectedUrl) => { |  | ||||||
|     const result = await distribution['findPackageForDownload'](input); |  | ||||||
|     expect(result.version).toBe(expectedVersion); |  | ||||||
|     const osType = distribution.getPlatform(); |  | ||||||
|     const archiveType = getDownloadArchiveExtension(); |  | ||||||
|     const url = expectedUrl.replace('{{OS_TYPE}}', osType).replace('{{ARCHIVE_TYPE}}', archiveType); |  | ||||||
|     expect(result.url).toBe(url); |  | ||||||
|   }); |  | ||||||
| 
 |  | ||||||
|   it.each([ |  | ||||||
|     ['amd64', 'x64'], |  | ||||||
|     ['arm64', 'aarch64'] |  | ||||||
|   ])( |  | ||||||
|     'defaults to os.arch(): %s mapped to distro arch: %s', |  | ||||||
|     async (osArch: string, distroArch: string) => { |  | ||||||
|       jest.spyOn(os, 'arch').mockReturnValue(osArch); |  | ||||||
|       jest.spyOn(os, 'platform').mockReturnValue('linux'); |  | ||||||
| 
 |  | ||||||
|       const version = '17'; |  | ||||||
|       const distro = new OracleDistribution({ |  | ||||||
|         version, |  | ||||||
|         architecture: '', // to get default value
 |  | ||||||
|         packageType: 'jdk', |  | ||||||
|         checkLatest: false |  | ||||||
|       }); |  | ||||||
| 
 |  | ||||||
|       const osType = distribution.getPlatform(); |  | ||||||
|       if (osType === 'windows' && distroArch == 'aarch64') { |  | ||||||
|         return; // skip, aarch64 is not available for Windows
 |  | ||||||
|       } |  | ||||||
|       const archiveType = getDownloadArchiveExtension(); |  | ||||||
|       const result = await distro['findPackageForDownload'](version); |  | ||||||
|       const expectedUrl = `https://download.oracle.com/java/17/latest/jdk-17_${osType}-${distroArch}_bin.${archiveType}`; |  | ||||||
| 
 |  | ||||||
|       expect(result.url).toBe(expectedUrl); |  | ||||||
|     } |  | ||||||
|   ); |  | ||||||
| 
 |  | ||||||
|   it('should throw an error', async () => { |  | ||||||
|     await expect(distribution['findPackageForDownload']('8')).rejects.toThrow( |  | ||||||
|       /Oracle JDK is only supported for JDK 17 and later/ |  | ||||||
|     ); |  | ||||||
|     await expect(distribution['findPackageForDownload']('11')).rejects.toThrow( |  | ||||||
|       /Oracle JDK is only supported for JDK 17 and later/ |  | ||||||
|     ); |  | ||||||
|     await expect(distribution['findPackageForDownload']('18')).rejects.toThrow( |  | ||||||
|       /Could not find Oracle JDK for SemVer */ |  | ||||||
|     ); |  | ||||||
|   }); |  | ||||||
| }); |  | ||||||
| @ -24,7 +24,7 @@ fi | |||||||
| ACTUAL_JAVA_VERSION="$(java -version 2>&1)" | ACTUAL_JAVA_VERSION="$(java -version 2>&1)" | ||||||
| echo "Found java version: $ACTUAL_JAVA_VERSION" | echo "Found java version: $ACTUAL_JAVA_VERSION" | ||||||
| 
 | 
 | ||||||
| GREP_RESULT=$(echo $ACTUAL_JAVA_VERSION | grep -E "^(openjdk|java) version \"$EXPECTED_JAVA_VERSION") | GREP_RESULT=$(echo $ACTUAL_JAVA_VERSION | grep "^openjdk version \"$EXPECTED_JAVA_VERSION") | ||||||
| if [ -z "$GREP_RESULT" ]; then | if [ -z "$GREP_RESULT" ]; then | ||||||
|   echo "::error::Unexpected version" |   echo "::error::Unexpected version" | ||||||
|   echo "Expected version: $EXPECTED_JAVA_VERSION" |   echo "Expected version: $EXPECTED_JAVA_VERSION" | ||||||
|  | |||||||
							
								
								
									
										123
									
								
								dist/setup/index.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										123
									
								
								dist/setup/index.js
									
									
									
									
										vendored
									
									
								
							| @ -104157,7 +104157,6 @@ const installer_4 = __nccwpck_require__(8579); | |||||||
| const installer_5 = __nccwpck_require__(883); | const installer_5 = __nccwpck_require__(883); | ||||||
| const installer_6 = __nccwpck_require__(3613); | const installer_6 = __nccwpck_require__(3613); | ||||||
| const installer_7 = __nccwpck_require__(4750); | const installer_7 = __nccwpck_require__(4750); | ||||||
| const installer_8 = __nccwpck_require__(4298); |  | ||||||
| var JavaDistribution; | var JavaDistribution; | ||||||
| (function (JavaDistribution) { | (function (JavaDistribution) { | ||||||
|     JavaDistribution["Adopt"] = "adopt"; |     JavaDistribution["Adopt"] = "adopt"; | ||||||
| @ -104169,7 +104168,6 @@ var JavaDistribution; | |||||||
|     JavaDistribution["JdkFile"] = "jdkfile"; |     JavaDistribution["JdkFile"] = "jdkfile"; | ||||||
|     JavaDistribution["Microsoft"] = "microsoft"; |     JavaDistribution["Microsoft"] = "microsoft"; | ||||||
|     JavaDistribution["Corretto"] = "corretto"; |     JavaDistribution["Corretto"] = "corretto"; | ||||||
|     JavaDistribution["Oracle"] = "oracle"; |  | ||||||
| })(JavaDistribution || (JavaDistribution = {})); | })(JavaDistribution || (JavaDistribution = {})); | ||||||
| function getJavaDistribution(distributionName, installerOptions, jdkFile) { | function getJavaDistribution(distributionName, installerOptions, jdkFile) { | ||||||
|     switch (distributionName) { |     switch (distributionName) { | ||||||
| @ -104190,8 +104188,6 @@ function getJavaDistribution(distributionName, installerOptions, jdkFile) { | |||||||
|             return new installer_6.MicrosoftDistributions(installerOptions); |             return new installer_6.MicrosoftDistributions(installerOptions); | ||||||
|         case JavaDistribution.Corretto: |         case JavaDistribution.Corretto: | ||||||
|             return new installer_7.CorrettoDistribution(installerOptions); |             return new installer_7.CorrettoDistribution(installerOptions); | ||||||
|         case JavaDistribution.Oracle: |  | ||||||
|             return new installer_8.OracleDistribution(installerOptions); |  | ||||||
|         default: |         default: | ||||||
|             return null; |             return null; | ||||||
|     } |     } | ||||||
| @ -104599,125 +104595,6 @@ class MicrosoftDistributions extends base_installer_1.JavaBase { | |||||||
| exports.MicrosoftDistributions = MicrosoftDistributions; | exports.MicrosoftDistributions = MicrosoftDistributions; | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| /***/ }), |  | ||||||
| 
 |  | ||||||
| /***/ 4298: |  | ||||||
| /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { |  | ||||||
| 
 |  | ||||||
| "use strict"; |  | ||||||
| 
 |  | ||||||
| var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { |  | ||||||
|     if (k2 === undefined) k2 = k; |  | ||||||
|     Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); |  | ||||||
| }) : (function(o, m, k, k2) { |  | ||||||
|     if (k2 === undefined) k2 = k; |  | ||||||
|     o[k2] = m[k]; |  | ||||||
| })); |  | ||||||
| var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { |  | ||||||
|     Object.defineProperty(o, "default", { enumerable: true, value: v }); |  | ||||||
| }) : function(o, v) { |  | ||||||
|     o["default"] = v; |  | ||||||
| }); |  | ||||||
| var __importStar = (this && this.__importStar) || function (mod) { |  | ||||||
|     if (mod && mod.__esModule) return mod; |  | ||||||
|     var result = {}; |  | ||||||
|     if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); |  | ||||||
|     __setModuleDefault(result, mod); |  | ||||||
|     return result; |  | ||||||
| }; |  | ||||||
| var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { |  | ||||||
|     function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } |  | ||||||
|     return new (P || (P = Promise))(function (resolve, reject) { |  | ||||||
|         function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } |  | ||||||
|         function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } |  | ||||||
|         function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } |  | ||||||
|         step((generator = generator.apply(thisArg, _arguments || [])).next()); |  | ||||||
|     }); |  | ||||||
| }; |  | ||||||
| var __importDefault = (this && this.__importDefault) || function (mod) { |  | ||||||
|     return (mod && mod.__esModule) ? mod : { "default": mod }; |  | ||||||
| }; |  | ||||||
| Object.defineProperty(exports, "__esModule", ({ value: true })); |  | ||||||
| exports.OracleDistribution = void 0; |  | ||||||
| const core = __importStar(__nccwpck_require__(2186)); |  | ||||||
| const tc = __importStar(__nccwpck_require__(7784)); |  | ||||||
| const fs_1 = __importDefault(__nccwpck_require__(7147)); |  | ||||||
| const path_1 = __importDefault(__nccwpck_require__(1017)); |  | ||||||
| const base_installer_1 = __nccwpck_require__(9741); |  | ||||||
| const util_1 = __nccwpck_require__(2629); |  | ||||||
| const http_client_1 = __nccwpck_require__(9925); |  | ||||||
| const ORACLE_DL_BASE = 'https://download.oracle.com/java'; |  | ||||||
| class OracleDistribution extends base_installer_1.JavaBase { |  | ||||||
|     constructor(installerOptions) { |  | ||||||
|         super('Oracle', installerOptions); |  | ||||||
|     } |  | ||||||
|     downloadTool(javaRelease) { |  | ||||||
|         return __awaiter(this, void 0, void 0, function* () { |  | ||||||
|             core.info(`Downloading Java ${javaRelease.version} (${this.distribution}) from ${javaRelease.url} ...`); |  | ||||||
|             const javaArchivePath = yield tc.downloadTool(javaRelease.url); |  | ||||||
|             core.info(`Extracting Java archive...`); |  | ||||||
|             let extension = util_1.getDownloadArchiveExtension(); |  | ||||||
|             let extractedJavaPath = yield util_1.extractJdkFile(javaArchivePath, extension); |  | ||||||
|             const archiveName = fs_1.default.readdirSync(extractedJavaPath)[0]; |  | ||||||
|             const archivePath = path_1.default.join(extractedJavaPath, archiveName); |  | ||||||
|             const version = this.getToolcacheVersionName(javaRelease.version); |  | ||||||
|             let javaPath = yield tc.cacheDir(archivePath, this.toolcacheFolderName, version, this.architecture); |  | ||||||
|             return { version: javaRelease.version, path: javaPath }; |  | ||||||
|         }); |  | ||||||
|     } |  | ||||||
|     findPackageForDownload(range) { |  | ||||||
|         return __awaiter(this, void 0, void 0, function* () { |  | ||||||
|             const arch = this.distributionArchitecture(); |  | ||||||
|             if (arch !== 'x64' && arch !== 'aarch64') { |  | ||||||
|                 throw new Error(`Unsupported architecture: ${this.architecture}`); |  | ||||||
|             } |  | ||||||
|             if (!this.stable) { |  | ||||||
|                 throw new Error('Early access versions are not supported'); |  | ||||||
|             } |  | ||||||
|             if (this.packageType !== 'jdk') { |  | ||||||
|                 throw new Error('Oracle JDK provides only the `jdk` package type'); |  | ||||||
|             } |  | ||||||
|             const platform = this.getPlatform(); |  | ||||||
|             const extension = util_1.getDownloadArchiveExtension(); |  | ||||||
|             let major; |  | ||||||
|             let fileUrl; |  | ||||||
|             if (range.includes('.')) { |  | ||||||
|                 major = range.split('.')[0]; |  | ||||||
|                 fileUrl = `${ORACLE_DL_BASE}/${major}/archive/jdk-${range}_${platform}-${arch}_bin.${extension}`; |  | ||||||
|             } |  | ||||||
|             else { |  | ||||||
|                 major = range; |  | ||||||
|                 fileUrl = `${ORACLE_DL_BASE}/${range}/latest/jdk-${range}_${platform}-${arch}_bin.${extension}`; |  | ||||||
|             } |  | ||||||
|             if (parseInt(major) < 17) { |  | ||||||
|                 throw new Error('Oracle JDK is only supported for JDK 17 and later'); |  | ||||||
|             } |  | ||||||
|             const response = yield this.http.head(fileUrl); |  | ||||||
|             if (response.message.statusCode === http_client_1.HttpCodes.NotFound) { |  | ||||||
|                 throw new Error(`Could not find Oracle JDK for SemVer ${range}`); |  | ||||||
|             } |  | ||||||
|             if (response.message.statusCode !== http_client_1.HttpCodes.OK) { |  | ||||||
|                 throw new Error(`Http request for Oracle JDK failed with status code: ${response.message.statusCode}`); |  | ||||||
|             } |  | ||||||
|             return { url: fileUrl, version: range }; |  | ||||||
|         }); |  | ||||||
|     } |  | ||||||
|     getPlatform(platform = process.platform) { |  | ||||||
|         switch (platform) { |  | ||||||
|             case 'darwin': |  | ||||||
|                 return 'macos'; |  | ||||||
|             case 'win32': |  | ||||||
|                 return 'windows'; |  | ||||||
|             case 'linux': |  | ||||||
|                 return 'linux'; |  | ||||||
|             default: |  | ||||||
|                 throw new Error(`Platform '${platform}' is not supported. Supported platforms: 'linux', 'macos', 'windows'`); |  | ||||||
|         } |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| exports.OracleDistribution = OracleDistribution; |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| /***/ }), | /***/ }), | ||||||
| 
 | 
 | ||||||
| /***/ 8579: | /***/ 8579: | ||||||
|  | |||||||
| @ -6,7 +6,6 @@ | |||||||
|   - [Liberica](#Liberica) |   - [Liberica](#Liberica) | ||||||
|   - [Microsoft](#Microsoft) |   - [Microsoft](#Microsoft) | ||||||
|   - [Amazon Corretto](#Amazon-Corretto) |   - [Amazon Corretto](#Amazon-Corretto) | ||||||
|   - [Oracle](#Oracle) |  | ||||||
| - [Installing custom Java package type](#Installing-custom-Java-package-type) | - [Installing custom Java package type](#Installing-custom-Java-package-type) | ||||||
| - [Installing custom Java architecture](#Installing-custom-Java-architecture) | - [Installing custom Java architecture](#Installing-custom-Java-architecture) | ||||||
| - [Installing custom Java distribution from local file](#Installing-Java-from-local-file) | - [Installing custom Java distribution from local file](#Installing-Java-from-local-file) | ||||||
| @ -110,19 +109,6 @@ steps: | |||||||
| - run: java -cp java HelloWorldApp | - run: java -cp java HelloWorldApp | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
| ### Oracle |  | ||||||
| **NOTE:** Oracle Java SE Development Kit is only available for version 17 and later. |  | ||||||
| 
 |  | ||||||
| ```yaml |  | ||||||
| steps: |  | ||||||
| - uses: actions/checkout@v3 |  | ||||||
| - uses: actions/setup-java@v3 |  | ||||||
|   with: |  | ||||||
|     distribution: 'oracle' |  | ||||||
|     java-version: '17' |  | ||||||
| - run: java -cp java HelloWorldApp |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| ## Installing custom Java package type | ## Installing custom Java package type | ||||||
| ```yaml | ```yaml | ||||||
| steps: | steps: | ||||||
|  | |||||||
| @ -7,7 +7,6 @@ import { TemurinDistribution, TemurinImplementation } from './temurin/installer' | |||||||
| import { LibericaDistributions } from './liberica/installer'; | import { LibericaDistributions } from './liberica/installer'; | ||||||
| import { MicrosoftDistributions } from './microsoft/installer'; | import { MicrosoftDistributions } from './microsoft/installer'; | ||||||
| import { CorrettoDistribution } from './corretto/installer'; | import { CorrettoDistribution } from './corretto/installer'; | ||||||
| import { OracleDistribution } from './oracle/installer'; |  | ||||||
| 
 | 
 | ||||||
| enum JavaDistribution { | enum JavaDistribution { | ||||||
|   Adopt = 'adopt', |   Adopt = 'adopt', | ||||||
| @ -18,8 +17,7 @@ enum JavaDistribution { | |||||||
|   Liberica = 'liberica', |   Liberica = 'liberica', | ||||||
|   JdkFile = 'jdkfile', |   JdkFile = 'jdkfile', | ||||||
|   Microsoft = 'microsoft', |   Microsoft = 'microsoft', | ||||||
|   Corretto = 'corretto', |   Corretto = 'corretto' | ||||||
|   Oracle = 'oracle' |  | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| export function getJavaDistribution( | export function getJavaDistribution( | ||||||
| @ -45,8 +43,6 @@ export function getJavaDistribution( | |||||||
|       return new MicrosoftDistributions(installerOptions); |       return new MicrosoftDistributions(installerOptions); | ||||||
|     case JavaDistribution.Corretto: |     case JavaDistribution.Corretto: | ||||||
|       return new CorrettoDistribution(installerOptions); |       return new CorrettoDistribution(installerOptions); | ||||||
|     case JavaDistribution.Oracle: |  | ||||||
|       return new OracleDistribution(installerOptions); |  | ||||||
|     default: |     default: | ||||||
|       return null; |       return null; | ||||||
|   } |   } | ||||||
|  | |||||||
| @ -1,103 +0,0 @@ | |||||||
| import * as core from '@actions/core'; |  | ||||||
| import * as tc from '@actions/tool-cache'; |  | ||||||
| 
 |  | ||||||
| import fs from 'fs'; |  | ||||||
| import path from 'path'; |  | ||||||
| 
 |  | ||||||
| import { JavaBase } from '../base-installer'; |  | ||||||
| import { JavaDownloadRelease, JavaInstallerOptions, JavaInstallerResults } from '../base-models'; |  | ||||||
| import { extractJdkFile, getDownloadArchiveExtension } from '../../util'; |  | ||||||
| import { HttpCodes } from '@actions/http-client'; |  | ||||||
| 
 |  | ||||||
| const ORACLE_DL_BASE = 'https://download.oracle.com/java'; |  | ||||||
| 
 |  | ||||||
| export class OracleDistribution extends JavaBase { |  | ||||||
|   constructor(installerOptions: JavaInstallerOptions) { |  | ||||||
|     super('Oracle', installerOptions); |  | ||||||
|   } |  | ||||||
| 
 |  | ||||||
|   protected async downloadTool(javaRelease: JavaDownloadRelease): Promise<JavaInstallerResults> { |  | ||||||
|     core.info( |  | ||||||
|       `Downloading Java ${javaRelease.version} (${this.distribution}) from ${javaRelease.url} ...` |  | ||||||
|     ); |  | ||||||
|     const javaArchivePath = await tc.downloadTool(javaRelease.url); |  | ||||||
| 
 |  | ||||||
|     core.info(`Extracting Java archive...`); |  | ||||||
|     let extension = getDownloadArchiveExtension(); |  | ||||||
| 
 |  | ||||||
|     let extractedJavaPath = await extractJdkFile(javaArchivePath, extension); |  | ||||||
| 
 |  | ||||||
|     const archiveName = fs.readdirSync(extractedJavaPath)[0]; |  | ||||||
|     const archivePath = path.join(extractedJavaPath, archiveName); |  | ||||||
|     const version = this.getToolcacheVersionName(javaRelease.version); |  | ||||||
| 
 |  | ||||||
|     let javaPath = await tc.cacheDir( |  | ||||||
|       archivePath, |  | ||||||
|       this.toolcacheFolderName, |  | ||||||
|       version, |  | ||||||
|       this.architecture |  | ||||||
|     ); |  | ||||||
| 
 |  | ||||||
|     return { version: javaRelease.version, path: javaPath }; |  | ||||||
|   } |  | ||||||
| 
 |  | ||||||
|   protected async findPackageForDownload(range: string): Promise<JavaDownloadRelease> { |  | ||||||
|     const arch = this.distributionArchitecture(); |  | ||||||
|     if (arch !== 'x64' && arch !== 'aarch64') { |  | ||||||
|       throw new Error(`Unsupported architecture: ${this.architecture}`); |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     if (!this.stable) { |  | ||||||
|       throw new Error('Early access versions are not supported'); |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     if (this.packageType !== 'jdk') { |  | ||||||
|       throw new Error('Oracle JDK provides only the `jdk` package type'); |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     const platform = this.getPlatform(); |  | ||||||
|     const extension = getDownloadArchiveExtension(); |  | ||||||
|     let major; |  | ||||||
|     let fileUrl; |  | ||||||
|     if (range.includes('.')) { |  | ||||||
|       major = range.split('.')[0]; |  | ||||||
|       fileUrl = `${ORACLE_DL_BASE}/${major}/archive/jdk-${range}_${platform}-${arch}_bin.${extension}`; |  | ||||||
|     } else { |  | ||||||
|       major = range; |  | ||||||
|       fileUrl = `${ORACLE_DL_BASE}/${range}/latest/jdk-${range}_${platform}-${arch}_bin.${extension}`; |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     if (parseInt(major) < 17) { |  | ||||||
|       throw new Error('Oracle JDK is only supported for JDK 17 and later'); |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     const response = await this.http.head(fileUrl); |  | ||||||
| 
 |  | ||||||
|     if (response.message.statusCode === HttpCodes.NotFound) { |  | ||||||
|       throw new Error(`Could not find Oracle JDK for SemVer ${range}`); |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     if (response.message.statusCode !== HttpCodes.OK) { |  | ||||||
|       throw new Error( |  | ||||||
|         `Http request for Oracle JDK failed with status code: ${response.message.statusCode}` |  | ||||||
|       ); |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     return { url: fileUrl, version: range }; |  | ||||||
|   } |  | ||||||
| 
 |  | ||||||
|   public getPlatform(platform: NodeJS.Platform = process.platform): OsVersions { |  | ||||||
|     switch (platform) { |  | ||||||
|       case 'darwin': |  | ||||||
|         return 'macos'; |  | ||||||
|       case 'win32': |  | ||||||
|         return 'windows'; |  | ||||||
|       case 'linux': |  | ||||||
|         return 'linux'; |  | ||||||
|       default: |  | ||||||
|         throw new Error( |  | ||||||
|           `Platform '${platform}' is not supported. Supported platforms: 'linux', 'macos', 'windows'` |  | ||||||
|         ); |  | ||||||
|     } |  | ||||||
|   } |  | ||||||
| } |  | ||||||
| @ -1 +0,0 @@ | |||||||
| export type OsVersions = 'linux' | 'macos' | 'windows'; |  | ||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user