mirror of
				https://gitea.com/actions/setup-java.git
				synced 2025-10-29 07:47:09 +00:00 
			
		
		
		
	Add support for Eclipse Temurin (#201)
* Add support for Adoptium OpenJDK Refs https://github.com/actions/setup-java/issues/191 * Rename distribution to Eclipse Temurin * Update end-to-end tests in GitHub workflows * Exclude e2e tests for Temurin JREs for now * fix version * Update e2e-versions.yml * Handle Eclipse Temurin version suffixes ("beta") * Add test for new version suffix "beta" * Add updated `index.js` * fix an issue Co-authored-by: Maxim Lobanov <maxim-lobanov@github.com>
This commit is contained in:
		
							
								
								
									
										37
									
								
								.github/workflows/e2e-local-file.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										37
									
								
								.github/workflows/e2e-local-file.yml
									
									
									
									
										vendored
									
									
								
							| @@ -84,3 +84,40 @@ jobs: | |||||||
|       - name: Verify Java version |       - name: Verify Java version | ||||||
|         run: bash __tests__/verify-java.sh "11.0" "${{ steps.setup-java.outputs.path }}" |         run: bash __tests__/verify-java.sh "11.0" "${{ steps.setup-java.outputs.path }}" | ||||||
|         shell: bash |         shell: bash | ||||||
|  |  | ||||||
|  |   setup-java-local-file-temurin: | ||||||
|  |     name: Validate installation from local file Eclipse Temurin | ||||||
|  |     runs-on: ${{ matrix.os }} | ||||||
|  |     strategy: | ||||||
|  |       fail-fast: false | ||||||
|  |       matrix: | ||||||
|  |         os: [macos-latest, windows-latest, ubuntu-latest] | ||||||
|  |     steps: | ||||||
|  |       - name: Checkout | ||||||
|  |         uses: actions/checkout@v2 | ||||||
|  |       - name: Download Eclipse Temurin file | ||||||
|  |         run: | | ||||||
|  |           if ($IsLinux) { | ||||||
|  |             $downloadUrl = "https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.12%2B7/OpenJDK11U-jdk_x64_linux_hotspot_11.0.12_7.tar.gz" | ||||||
|  |             $localFilename = "java_package.tar.gz" | ||||||
|  |           } elseif ($IsMacOS) { | ||||||
|  |             $downloadUrl = "https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.12%2B7/OpenJDK11U-jdk_x64_mac_hotspot_11.0.12_7.tar.gz" | ||||||
|  |             $localFilename = "java_package.tar.gz" | ||||||
|  |           } elseif ($IsWindows) { | ||||||
|  |             $downloadUrl = "https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.12%2B7/OpenJDK11U-jdk_x64_windows_hotspot_11.0.12_7.zip" | ||||||
|  |             $localFilename = "java_package.zip" | ||||||
|  |           } | ||||||
|  |           echo "LocalFilename=$localFilename" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append | ||||||
|  |           (New-Object System.Net.WebClient).DownloadFile($downloadUrl, "$env:RUNNER_TEMP/$localFilename") | ||||||
|  |         shell: pwsh | ||||||
|  |       - name: setup-java | ||||||
|  |         uses: ./ | ||||||
|  |         id: setup-java | ||||||
|  |         with: | ||||||
|  |           distribution: 'jdkfile' | ||||||
|  |           jdkFile: ${{ runner.temp }}/${{ env.LocalFilename }} | ||||||
|  |           java-version: '11.0.0-ea' | ||||||
|  |           architecture: x64 | ||||||
|  |       - name: Verify Java version | ||||||
|  |         run: bash __tests__/verify-java.sh "11.0.12" "${{ steps.setup-java.outputs.path }}" | ||||||
|  |         shell: bash | ||||||
|   | |||||||
							
								
								
									
										46
									
								
								.github/workflows/e2e-versions.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										46
									
								
								.github/workflows/e2e-versions.yml
									
									
									
									
										vendored
									
									
								
							| @@ -11,6 +11,7 @@ on: | |||||||
|       - '**.md' |       - '**.md' | ||||||
|   schedule: |   schedule: | ||||||
|     - cron:  '0 */12 * * *' |     - cron:  '0 */12 * * *' | ||||||
|  |   workflow_dispatch: | ||||||
| jobs: | jobs: | ||||||
|   setup-java-major-versions: |   setup-java-major-versions: | ||||||
|     name: ${{ matrix.distribution }} ${{ matrix.version }} (jdk-x64) - ${{ matrix.os }} |     name: ${{ matrix.distribution }} ${{ matrix.version }} (jdk-x64) - ${{ matrix.os }} | ||||||
| @@ -19,8 +20,8 @@ jobs: | |||||||
|       fail-fast: false |       fail-fast: false | ||||||
|       matrix: |       matrix: | ||||||
|         os: [macos-latest, windows-latest, ubuntu-latest] |         os: [macos-latest, windows-latest, ubuntu-latest] | ||||||
|         distribution: ['adopt', 'adopt-openj9', 'zulu'] # internally 'adopt-hotspot' is the same as 'adopt' |         distribution: ['adopt', 'adopt-openj9', 'temurin', 'zulu'] # internally 'adopt-hotspot' is the same as 'adopt' | ||||||
|         version: ['8', '11', '15'] |         version: ['8', '11', '16'] | ||||||
|     steps: |     steps: | ||||||
|       - name: Checkout |       - name: Checkout | ||||||
|         uses: actions/checkout@v2 |         uses: actions/checkout@v2 | ||||||
| @@ -57,6 +58,15 @@ jobs: | |||||||
|           - distribution: 'adopt' |           - distribution: 'adopt' | ||||||
|             version: '12.0.2+10.1' |             version: '12.0.2+10.1' | ||||||
|             os: ubuntu-latest |             os: ubuntu-latest | ||||||
|  |           - distribution: 'temurin' | ||||||
|  |             version: '16.0.2+7' | ||||||
|  |             os: macos-latest | ||||||
|  |           - distribution: 'temurin' | ||||||
|  |             version: '16.0.2+7' | ||||||
|  |             os: windows-latest | ||||||
|  |           - distribution: 'temurin' | ||||||
|  |             version: '16.0.2+7' | ||||||
|  |             os: ubuntu-latest | ||||||
|     steps: |     steps: | ||||||
|       - name: Checkout |       - name: Checkout | ||||||
|         uses: actions/checkout@v2 |         uses: actions/checkout@v2 | ||||||
| @@ -78,7 +88,7 @@ jobs: | |||||||
|       fail-fast: false |       fail-fast: false | ||||||
|       matrix: |       matrix: | ||||||
|         os: [macos-latest, windows-latest, ubuntu-latest] |         os: [macos-latest, windows-latest, ubuntu-latest] | ||||||
|         distribution: ['adopt', 'zulu'] |         distribution: ['adopt', 'temurin', 'zulu'] | ||||||
|     steps: |     steps: | ||||||
|       - name: Checkout |       - name: Checkout | ||||||
|         uses: actions/checkout@v2 |         uses: actions/checkout@v2 | ||||||
| @@ -137,6 +147,28 @@ jobs: | |||||||
|         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 | ||||||
|  |  | ||||||
|  |   setup-java-ea-versions-temurin: | ||||||
|  |     name: temurin ${{ matrix.version }} (jdk-x64) - ${{ matrix.os }} | ||||||
|  |     needs: setup-java-major-minor-versions | ||||||
|  |     runs-on: ${{ matrix.os }} | ||||||
|  |     strategy: | ||||||
|  |       fail-fast: false | ||||||
|  |       matrix: | ||||||
|  |         os: [macos-latest, windows-latest, ubuntu-latest] | ||||||
|  |         version: ['17-ea'] | ||||||
|  |     steps: | ||||||
|  |       - name: Checkout | ||||||
|  |         uses: actions/checkout@v2 | ||||||
|  |       - name: setup-java | ||||||
|  |         uses: ./ | ||||||
|  |         id: setup-java | ||||||
|  |         with: | ||||||
|  |           java-version: ${{ matrix.version }} | ||||||
|  |           distribution: temurin | ||||||
|  |       - name: Verify Java | ||||||
|  |         run: bash __tests__/verify-java.sh "${{ matrix.version }}" "${{ steps.setup-java.outputs.path }}" | ||||||
|  |         shell: bash | ||||||
|  |  | ||||||
|   setup-java-custom-package-type: |   setup-java-custom-package-type: | ||||||
|     name: ${{ matrix.distribution }} ${{ matrix.version }} (${{ matrix.java-package }}-x64) - ${{ matrix.os }} |     name: ${{ matrix.distribution }} ${{ matrix.version }} (${{ matrix.java-package }}-x64) - ${{ matrix.os }} | ||||||
|     needs: setup-java-major-minor-versions |     needs: setup-java-major-minor-versions | ||||||
| @@ -145,10 +177,10 @@ jobs: | |||||||
|       fail-fast: false |       fail-fast: false | ||||||
|       matrix: |       matrix: | ||||||
|         os: [macos-latest, windows-latest, ubuntu-latest] |         os: [macos-latest, windows-latest, ubuntu-latest] | ||||||
|         distribution: ['adopt', 'zulu'] |         distribution: ['adopt', 'temurin', 'zulu'] | ||||||
|         java-package: ['jre'] |         java-package: ['jre'] | ||||||
|         version: |         version: | ||||||
|         - '15.0' |         - '16.0' | ||||||
|         include: |         include: | ||||||
|           - distribution: 'zulu' |           - distribution: 'zulu' | ||||||
|             java-package: jre+fx |             java-package: jre+fx | ||||||
| @@ -158,6 +190,10 @@ jobs: | |||||||
|             java-package: jdk+fx |             java-package: jdk+fx | ||||||
|             version: '8.0.242' |             version: '8.0.242' | ||||||
|             os: ubuntu-latest |             os: ubuntu-latest | ||||||
|  |         exclude: | ||||||
|  |           # Eclipse Temurin currently doesn't publish JREs, only JDKs | ||||||
|  |           - distribution: 'temurin' | ||||||
|  |             java-package: 'jre' | ||||||
|     steps: |     steps: | ||||||
|       - name: Checkout |       - name: Checkout | ||||||
|         uses: actions/checkout@v2 |         uses: actions/checkout@v2 | ||||||
|   | |||||||
							
								
								
									
										14
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										14
									
								
								README.md
									
									
									
									
									
								
							| @@ -13,7 +13,7 @@ This action provides the following functionality for GitHub Actions runners: | |||||||
| - Registering problem matchers for error output | - Registering problem matchers for error output | ||||||
|  |  | ||||||
| ## V2 vs V1 | ## V2 vs V1 | ||||||
| - V2 supports custom distributions and provides support for Zulu OpenJDK and Adopt OpenJDK out of the box. V1 supports only Zulu OpenJDK | - V2 supports custom distributions and provides support for Zulu OpenJDK, Adopt OpenJDK and Eclipse Temurin out of the box. V1 supports only Zulu OpenJDK | ||||||
| - V2 requires you to specify distribution along with the version. V1 defaults to Zulu OpenJDK, only version input is required. Follow [the migration guide](docs/switching-to-v2.md) to switch from V1 to V2 | - V2 requires you to specify distribution along with the version. V1 defaults to Zulu OpenJDK, only version input is required. Follow [the migration guide](docs/switching-to-v2.md) to switch from V1 to V2 | ||||||
|  |  | ||||||
| ## Usage | ## Usage | ||||||
| @@ -31,6 +31,17 @@ steps: | |||||||
| - run: java -cp java HelloWorldApp | - run: java -cp java HelloWorldApp | ||||||
| ``` | ``` | ||||||
|  |  | ||||||
|  | **Eclipse Temurin** | ||||||
|  | ```yaml | ||||||
|  | steps: | ||||||
|  | - uses: actions/checkout@v2 | ||||||
|  | - uses: actions/setup-java@v2 | ||||||
|  |   with: | ||||||
|  |     distribution: 'temurin' # See 'Supported distributions' for available options | ||||||
|  |     java-version: '8' | ||||||
|  | - run: java -cp java HelloWorldApp | ||||||
|  | ``` | ||||||
|  |  | ||||||
| **Zulu OpenJDK** | **Zulu OpenJDK** | ||||||
| ```yaml | ```yaml | ||||||
| steps: | steps: | ||||||
| @@ -55,6 +66,7 @@ Currently, the following distributions are supported: | |||||||
| | `zulu` | Zulu OpenJDK | [Link](https://www.azul.com/downloads/zulu-community/?package=jdk) | [Link](https://www.azul.com/products/zulu-and-zulu-enterprise/zulu-terms-of-use/) | | | `zulu` | Zulu OpenJDK | [Link](https://www.azul.com/downloads/zulu-community/?package=jdk) | [Link](https://www.azul.com/products/zulu-and-zulu-enterprise/zulu-terms-of-use/) | | ||||||
| | `adopt` or `adopt-hotspot` | Adopt OpenJDK Hotspot | [Link](https://adoptopenjdk.net/) | [Link](https://adoptopenjdk.net/about.html) | | `adopt` or `adopt-hotspot` | Adopt OpenJDK Hotspot | [Link](https://adoptopenjdk.net/) | [Link](https://adoptopenjdk.net/about.html) | ||||||
| | `adopt-openj9` | Adopt OpenJDK OpenJ9 | [Link](https://adoptopenjdk.net/) | [Link](https://adoptopenjdk.net/about.html) | | `adopt-openj9` | Adopt OpenJDK OpenJ9 | [Link](https://adoptopenjdk.net/) | [Link](https://adoptopenjdk.net/about.html) | ||||||
|  | | `temurin` | Eclipse Temurin | [Link](https://adoptium.net/) | [Link](https://adoptium.net/about.html) | ||||||
|  |  | ||||||
| **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. | ||||||
|  |  | ||||||
|   | |||||||
							
								
								
									
										2566
									
								
								__tests__/data/temurin.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2566
									
								
								__tests__/data/temurin.json
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										164
									
								
								__tests__/distributors/temurin-installer.test.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										164
									
								
								__tests__/distributors/temurin-installer.test.ts
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,164 @@ | |||||||
|  | import { HttpClient } from '@actions/http-client'; | ||||||
|  |  | ||||||
|  | import { | ||||||
|  |   TemurinDistribution, | ||||||
|  |   TemurinImplementation | ||||||
|  | } from '../../src/distributions/temurin/installer'; | ||||||
|  | import { JavaInstallerOptions } from '../../src/distributions/base-models'; | ||||||
|  |  | ||||||
|  | let manifestData = require('../data/temurin.json') as []; | ||||||
|  |  | ||||||
|  | describe('getAvailableVersions', () => { | ||||||
|  |   let spyHttpClient: jest.SpyInstance; | ||||||
|  |  | ||||||
|  |   beforeEach(() => { | ||||||
|  |     spyHttpClient = jest.spyOn(HttpClient.prototype, 'getJson'); | ||||||
|  |     spyHttpClient.mockReturnValue({ | ||||||
|  |       statusCode: 200, | ||||||
|  |       headers: {}, | ||||||
|  |       result: [] | ||||||
|  |     }); | ||||||
|  |   }); | ||||||
|  |  | ||||||
|  |   afterEach(() => { | ||||||
|  |     jest.resetAllMocks(); | ||||||
|  |     jest.clearAllMocks(); | ||||||
|  |     jest.restoreAllMocks(); | ||||||
|  |   }); | ||||||
|  |  | ||||||
|  |   it.each([ | ||||||
|  |     [ | ||||||
|  |       { version: '16', architecture: 'x64', packageType: 'jdk', checkLatest: false }, | ||||||
|  |       TemurinImplementation.Hotspot, | ||||||
|  |       'os=mac&architecture=x64&image_type=jdk&release_type=ga&jvm_impl=hotspot&page_size=20&page=0' | ||||||
|  |     ], | ||||||
|  |     [ | ||||||
|  |       { version: '16', architecture: 'x86', packageType: 'jdk', checkLatest: false }, | ||||||
|  |       TemurinImplementation.Hotspot, | ||||||
|  |       'os=mac&architecture=x86&image_type=jdk&release_type=ga&jvm_impl=hotspot&page_size=20&page=0' | ||||||
|  |     ], | ||||||
|  |     [ | ||||||
|  |       { version: '16', architecture: 'x64', packageType: 'jre', checkLatest: false }, | ||||||
|  |       TemurinImplementation.Hotspot, | ||||||
|  |       'os=mac&architecture=x64&image_type=jre&release_type=ga&jvm_impl=hotspot&page_size=20&page=0' | ||||||
|  |     ], | ||||||
|  |     [ | ||||||
|  |       { version: '16-ea', architecture: 'x64', packageType: 'jdk', checkLatest: false }, | ||||||
|  |       TemurinImplementation.Hotspot, | ||||||
|  |       'os=mac&architecture=x64&image_type=jdk&release_type=ea&jvm_impl=hotspot&page_size=20&page=0' | ||||||
|  |     ] | ||||||
|  |   ])( | ||||||
|  |     'build correct url for %s', | ||||||
|  |     async ( | ||||||
|  |       installerOptions: JavaInstallerOptions, | ||||||
|  |       impl: TemurinImplementation, | ||||||
|  |       expectedParameters | ||||||
|  |     ) => { | ||||||
|  |       const distribution = new TemurinDistribution(installerOptions, impl); | ||||||
|  |       const baseUrl = 'https://api.adoptium.net/v3/assets/version/%5B1.0,100.0%5D'; | ||||||
|  |       const expectedUrl = `${baseUrl}?project=jdk&vendor=adoptium&heap_size=normal&sort_method=DEFAULT&sort_order=DESC&${expectedParameters}`; | ||||||
|  |       distribution['getPlatformOption'] = () => 'mac'; | ||||||
|  |  | ||||||
|  |       await distribution['getAvailableVersions'](); | ||||||
|  |  | ||||||
|  |       expect(spyHttpClient.mock.calls).toHaveLength(1); | ||||||
|  |       expect(spyHttpClient.mock.calls[0][0]).toBe(expectedUrl); | ||||||
|  |     } | ||||||
|  |   ); | ||||||
|  |  | ||||||
|  |   it('load available versions', async () => { | ||||||
|  |     spyHttpClient = jest.spyOn(HttpClient.prototype, 'getJson'); | ||||||
|  |     spyHttpClient | ||||||
|  |       .mockReturnValueOnce({ | ||||||
|  |         statusCode: 200, | ||||||
|  |         headers: {}, | ||||||
|  |         result: manifestData | ||||||
|  |       }) | ||||||
|  |       .mockReturnValueOnce({ | ||||||
|  |         statusCode: 200, | ||||||
|  |         headers: {}, | ||||||
|  |         result: manifestData | ||||||
|  |       }) | ||||||
|  |       .mockReturnValueOnce({ | ||||||
|  |         statusCode: 200, | ||||||
|  |         headers: {}, | ||||||
|  |         result: [] | ||||||
|  |       }); | ||||||
|  |  | ||||||
|  |     const distribution = new TemurinDistribution( | ||||||
|  |       { version: '8', architecture: 'x64', packageType: 'jdk', checkLatest: false }, | ||||||
|  |       TemurinImplementation.Hotspot | ||||||
|  |     ); | ||||||
|  |     const availableVersions = await distribution['getAvailableVersions'](); | ||||||
|  |     expect(availableVersions).not.toBeNull(); | ||||||
|  |     expect(availableVersions.length).toBe(manifestData.length * 2); | ||||||
|  |   }); | ||||||
|  |  | ||||||
|  |   it.each([ | ||||||
|  |     [TemurinImplementation.Hotspot, 'jdk', 'Java_Temurin-Hotspot_jdk'], | ||||||
|  |     [TemurinImplementation.Hotspot, 'jre', 'Java_Temurin-Hotspot_jre'] | ||||||
|  |   ])( | ||||||
|  |     'find right toolchain folder', | ||||||
|  |     (impl: TemurinImplementation, packageType: string, expected: string) => { | ||||||
|  |       const distribution = new TemurinDistribution( | ||||||
|  |         { version: '8', architecture: 'x64', packageType: packageType, checkLatest: false }, | ||||||
|  |         impl | ||||||
|  |       ); | ||||||
|  |  | ||||||
|  |       // @ts-ignore - because it is protected | ||||||
|  |       expect(distribution.toolcacheFolderName).toBe(expected); | ||||||
|  |     } | ||||||
|  |   ); | ||||||
|  | }); | ||||||
|  |  | ||||||
|  | describe('findPackageForDownload', () => { | ||||||
|  |   it.each([ | ||||||
|  |     ['8', '8.0.302+8'], | ||||||
|  |     ['16', '16.0.2+7'], | ||||||
|  |     ['16.0', '16.0.2+7'], | ||||||
|  |     ['16.0.2', '16.0.2+7'], | ||||||
|  |     ['8.x', '8.0.302+8'], | ||||||
|  |     ['x', '16.0.2+7'] | ||||||
|  |   ])('version is resolved correctly %s -> %s', async (input, expected) => { | ||||||
|  |     const distribution = new TemurinDistribution( | ||||||
|  |       { version: '8', architecture: 'x64', packageType: 'jdk', checkLatest: false }, | ||||||
|  |       TemurinImplementation.Hotspot | ||||||
|  |     ); | ||||||
|  |     distribution['getAvailableVersions'] = async () => manifestData; | ||||||
|  |     const resolvedVersion = await distribution['findPackageForDownload'](input); | ||||||
|  |     expect(resolvedVersion.version).toBe(expected); | ||||||
|  |   }); | ||||||
|  |  | ||||||
|  |   it('version is found but binaries list is empty', async () => { | ||||||
|  |     const distribution = new TemurinDistribution( | ||||||
|  |       { version: '9.0.8', architecture: 'x64', packageType: 'jdk', checkLatest: false }, | ||||||
|  |       TemurinImplementation.Hotspot | ||||||
|  |     ); | ||||||
|  |     distribution['getAvailableVersions'] = async () => manifestData; | ||||||
|  |     await expect(distribution['findPackageForDownload']('9.0.8')).rejects.toThrowError( | ||||||
|  |       /Could not find satisfied version for SemVer */ | ||||||
|  |     ); | ||||||
|  |   }); | ||||||
|  |  | ||||||
|  |   it('version is not found', async () => { | ||||||
|  |     const distribution = new TemurinDistribution( | ||||||
|  |       { version: '7.x', architecture: 'x64', packageType: 'jdk', checkLatest: false }, | ||||||
|  |       TemurinImplementation.Hotspot | ||||||
|  |     ); | ||||||
|  |     distribution['getAvailableVersions'] = async () => manifestData; | ||||||
|  |     await expect(distribution['findPackageForDownload']('7.x')).rejects.toThrowError( | ||||||
|  |       /Could not find satisfied version for SemVer */ | ||||||
|  |     ); | ||||||
|  |   }); | ||||||
|  |  | ||||||
|  |   it('version list is empty', async () => { | ||||||
|  |     const distribution = new TemurinDistribution( | ||||||
|  |       { version: '8', architecture: 'x64', packageType: 'jdk', checkLatest: false }, | ||||||
|  |       TemurinImplementation.Hotspot | ||||||
|  |     ); | ||||||
|  |     distribution['getAvailableVersions'] = async () => []; | ||||||
|  |     await expect(distribution['findPackageForDownload']('8')).rejects.toThrowError( | ||||||
|  |       /Could not find satisfied version for SemVer */ | ||||||
|  |     ); | ||||||
|  |   }); | ||||||
|  | }); | ||||||
							
								
								
									
										174
									
								
								dist/setup/index.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										174
									
								
								dist/setup/index.js
									
									
									
									
										vendored
									
									
								
							| @@ -1479,11 +1479,13 @@ exports.getJavaDistribution = void 0; | |||||||
| const installer_1 = __webpack_require__(144); | const installer_1 = __webpack_require__(144); | ||||||
| const installer_2 = __webpack_require__(393); | const installer_2 = __webpack_require__(393); | ||||||
| const installer_3 = __webpack_require__(584); | const installer_3 = __webpack_require__(584); | ||||||
|  | const installer_4 = __webpack_require__(852); | ||||||
| var JavaDistribution; | var JavaDistribution; | ||||||
| (function (JavaDistribution) { | (function (JavaDistribution) { | ||||||
|     JavaDistribution["Adopt"] = "adopt"; |     JavaDistribution["Adopt"] = "adopt"; | ||||||
|     JavaDistribution["AdoptHotspot"] = "adopt-hotspot"; |     JavaDistribution["AdoptHotspot"] = "adopt-hotspot"; | ||||||
|     JavaDistribution["AdoptOpenJ9"] = "adopt-openj9"; |     JavaDistribution["AdoptOpenJ9"] = "adopt-openj9"; | ||||||
|  |     JavaDistribution["Temurin"] = "temurin"; | ||||||
|     JavaDistribution["Zulu"] = "zulu"; |     JavaDistribution["Zulu"] = "zulu"; | ||||||
|     JavaDistribution["JdkFile"] = "jdkfile"; |     JavaDistribution["JdkFile"] = "jdkfile"; | ||||||
| })(JavaDistribution || (JavaDistribution = {})); | })(JavaDistribution || (JavaDistribution = {})); | ||||||
| @@ -1496,6 +1498,8 @@ function getJavaDistribution(distributionName, installerOptions, jdkFile) { | |||||||
|             return new installer_3.AdoptDistribution(installerOptions, installer_3.AdoptImplementation.Hotspot); |             return new installer_3.AdoptDistribution(installerOptions, installer_3.AdoptImplementation.Hotspot); | ||||||
|         case JavaDistribution.AdoptOpenJ9: |         case JavaDistribution.AdoptOpenJ9: | ||||||
|             return new installer_3.AdoptDistribution(installerOptions, installer_3.AdoptImplementation.OpenJ9); |             return new installer_3.AdoptDistribution(installerOptions, installer_3.AdoptImplementation.OpenJ9); | ||||||
|  |         case JavaDistribution.Temurin: | ||||||
|  |             return new installer_4.TemurinDistribution(installerOptions, installer_4.TemurinImplementation.Hotspot); | ||||||
|         case JavaDistribution.Zulu: |         case JavaDistribution.Zulu: | ||||||
|             return new installer_2.ZuluDistribution(installerOptions); |             return new installer_2.ZuluDistribution(installerOptions); | ||||||
|         default: |         default: | ||||||
| @@ -39873,7 +39877,175 @@ module.exports = new Type('tag:yaml.org,2002:omap', { | |||||||
| /* 849 */, | /* 849 */, | ||||||
| /* 850 */, | /* 850 */, | ||||||
| /* 851 */, | /* 851 */, | ||||||
| /* 852 */, | /* 852 */ | ||||||
|  | /***/ (function(__unusedmodule, exports, __webpack_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.TemurinDistribution = exports.TemurinImplementation = void 0; | ||||||
|  | const core = __importStar(__webpack_require__(470)); | ||||||
|  | const tc = __importStar(__webpack_require__(139)); | ||||||
|  | const fs_1 = __importDefault(__webpack_require__(747)); | ||||||
|  | const path_1 = __importDefault(__webpack_require__(622)); | ||||||
|  | const semver_1 = __importDefault(__webpack_require__(876)); | ||||||
|  | const base_installer_1 = __webpack_require__(83); | ||||||
|  | const util_1 = __webpack_require__(322); | ||||||
|  | var TemurinImplementation; | ||||||
|  | (function (TemurinImplementation) { | ||||||
|  |     TemurinImplementation["Hotspot"] = "Hotspot"; | ||||||
|  | })(TemurinImplementation = exports.TemurinImplementation || (exports.TemurinImplementation = {})); | ||||||
|  | class TemurinDistribution extends base_installer_1.JavaBase { | ||||||
|  |     constructor(installerOptions, jvmImpl) { | ||||||
|  |         super(`Temurin-${jvmImpl}`, installerOptions); | ||||||
|  |         this.jvmImpl = jvmImpl; | ||||||
|  |     } | ||||||
|  |     findPackageForDownload(version) { | ||||||
|  |         return __awaiter(this, void 0, void 0, function* () { | ||||||
|  |             const availableVersionsRaw = yield this.getAvailableVersions(); | ||||||
|  |             const availableVersionsWithBinaries = availableVersionsRaw | ||||||
|  |                 .filter(item => item.binaries.length > 0) | ||||||
|  |                 .map(item => { | ||||||
|  |                 // normalize 17.0.0-beta+33.0.202107301459 to 17.0.0+33.0.202107301459 for earlier access versions
 | ||||||
|  |                 const formattedVersion = this.stable | ||||||
|  |                     ? item.version_data.semver | ||||||
|  |                     : item.version_data.semver.replace('-beta+', '+'); | ||||||
|  |                 return { | ||||||
|  |                     version: formattedVersion, | ||||||
|  |                     url: item.binaries[0].package.link | ||||||
|  |                 }; | ||||||
|  |             }); | ||||||
|  |             const satisfiedVersions = availableVersionsWithBinaries | ||||||
|  |                 .filter(item => util_1.isVersionSatisfies(version, item.version)) | ||||||
|  |                 .sort((a, b) => { | ||||||
|  |                 return -semver_1.default.compareBuild(a.version, b.version); | ||||||
|  |             }); | ||||||
|  |             const resolvedFullVersion = satisfiedVersions.length > 0 ? satisfiedVersions[0] : null; | ||||||
|  |             if (!resolvedFullVersion) { | ||||||
|  |                 const availableOptions = availableVersionsWithBinaries.map(item => item.version).join(', '); | ||||||
|  |                 const availableOptionsMessage = availableOptions | ||||||
|  |                     ? `\nAvailable versions: ${availableOptions}` | ||||||
|  |                     : ''; | ||||||
|  |                 throw new Error(`Could not find satisfied version for SemVer '${version}'. ${availableOptionsMessage}`); | ||||||
|  |             } | ||||||
|  |             return resolvedFullVersion; | ||||||
|  |         }); | ||||||
|  |     } | ||||||
|  |     downloadTool(javaRelease) { | ||||||
|  |         return __awaiter(this, void 0, void 0, function* () { | ||||||
|  |             let javaPath; | ||||||
|  |             let extractedJavaPath; | ||||||
|  |             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(); | ||||||
|  |             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); | ||||||
|  |             javaPath = yield tc.cacheDir(archivePath, this.toolcacheFolderName, version, this.architecture); | ||||||
|  |             return { version: javaRelease.version, path: javaPath }; | ||||||
|  |         }); | ||||||
|  |     } | ||||||
|  |     get toolcacheFolderName() { | ||||||
|  |         return super.toolcacheFolderName; | ||||||
|  |     } | ||||||
|  |     getAvailableVersions() { | ||||||
|  |         return __awaiter(this, void 0, void 0, function* () { | ||||||
|  |             const platform = this.getPlatformOption(); | ||||||
|  |             const arch = this.architecture; | ||||||
|  |             const imageType = this.packageType; | ||||||
|  |             const versionRange = encodeURI('[1.0,100.0]'); // retrieve all available versions
 | ||||||
|  |             const releaseType = this.stable ? 'ga' : 'ea'; | ||||||
|  |             console.time('temurin-retrieve-available-versions'); | ||||||
|  |             const baseRequestArguments = [ | ||||||
|  |                 `project=jdk`, | ||||||
|  |                 'vendor=adoptium', | ||||||
|  |                 `heap_size=normal`, | ||||||
|  |                 'sort_method=DEFAULT', | ||||||
|  |                 'sort_order=DESC', | ||||||
|  |                 `os=${platform}`, | ||||||
|  |                 `architecture=${arch}`, | ||||||
|  |                 `image_type=${imageType}`, | ||||||
|  |                 `release_type=${releaseType}`, | ||||||
|  |                 `jvm_impl=${this.jvmImpl.toLowerCase()}` | ||||||
|  |             ].join('&'); | ||||||
|  |             // need to iterate through all pages to retrieve the list of all versions
 | ||||||
|  |             // Adoptium API doesn't provide way to retrieve the count of pages to iterate so infinity loop
 | ||||||
|  |             let page_index = 0; | ||||||
|  |             const availableVersions = []; | ||||||
|  |             while (true) { | ||||||
|  |                 const requestArguments = `${baseRequestArguments}&page_size=20&page=${page_index}`; | ||||||
|  |                 const availableVersionsUrl = `https://api.adoptium.net/v3/assets/version/${versionRange}?${requestArguments}`; | ||||||
|  |                 if (core.isDebug() && page_index === 0) { | ||||||
|  |                     // url is identical except page_index so print it once for debug
 | ||||||
|  |                     core.debug(`Gathering available versions from '${availableVersionsUrl}'`); | ||||||
|  |                 } | ||||||
|  |                 const paginationPage = (yield this.http.getJson(availableVersionsUrl)).result; | ||||||
|  |                 if (paginationPage === null || paginationPage.length === 0) { | ||||||
|  |                     // break infinity loop because we have reached end of pagination
 | ||||||
|  |                     break; | ||||||
|  |                 } | ||||||
|  |                 availableVersions.push(...paginationPage); | ||||||
|  |                 page_index++; | ||||||
|  |             } | ||||||
|  |             if (core.isDebug()) { | ||||||
|  |                 core.startGroup('Print information about available versions'); | ||||||
|  |                 console.timeEnd('temurin-retrieve-available-versions'); | ||||||
|  |                 console.log(`Available versions: [${availableVersions.length}]`); | ||||||
|  |                 console.log(availableVersions.map(item => item.version_data.semver).join(', ')); | ||||||
|  |                 core.endGroup(); | ||||||
|  |             } | ||||||
|  |             return availableVersions; | ||||||
|  |         }); | ||||||
|  |     } | ||||||
|  |     getPlatformOption() { | ||||||
|  |         // Adoptium has own platform names so need to map them
 | ||||||
|  |         switch (process.platform) { | ||||||
|  |             case 'darwin': | ||||||
|  |                 return 'mac'; | ||||||
|  |             case 'win32': | ||||||
|  |                 return 'windows'; | ||||||
|  |             default: | ||||||
|  |                 return process.platform; | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | exports.TemurinDistribution = TemurinDistribution; | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | /***/ }), | ||||||
| /* 853 */, | /* 853 */, | ||||||
| /* 854 */, | /* 854 */, | ||||||
| /* 855 */, | /* 855 */, | ||||||
|   | |||||||
							
								
								
									
										6295
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										6295
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -3,11 +3,13 @@ import { JavaInstallerOptions } from './base-models'; | |||||||
| import { LocalDistribution } from './local/installer'; | import { LocalDistribution } from './local/installer'; | ||||||
| import { ZuluDistribution } from './zulu/installer'; | import { ZuluDistribution } from './zulu/installer'; | ||||||
| import { AdoptDistribution, AdoptImplementation } from './adopt/installer'; | import { AdoptDistribution, AdoptImplementation } from './adopt/installer'; | ||||||
|  | import { TemurinDistribution, TemurinImplementation } from './temurin/installer'; | ||||||
|  |  | ||||||
| enum JavaDistribution { | enum JavaDistribution { | ||||||
|   Adopt = 'adopt', |   Adopt = 'adopt', | ||||||
|   AdoptHotspot = 'adopt-hotspot', |   AdoptHotspot = 'adopt-hotspot', | ||||||
|   AdoptOpenJ9 = 'adopt-openj9', |   AdoptOpenJ9 = 'adopt-openj9', | ||||||
|  |   Temurin = 'temurin', | ||||||
|   Zulu = 'zulu', |   Zulu = 'zulu', | ||||||
|   JdkFile = 'jdkfile' |   JdkFile = 'jdkfile' | ||||||
| } | } | ||||||
| @@ -25,6 +27,8 @@ export function getJavaDistribution( | |||||||
|       return new AdoptDistribution(installerOptions, AdoptImplementation.Hotspot); |       return new AdoptDistribution(installerOptions, AdoptImplementation.Hotspot); | ||||||
|     case JavaDistribution.AdoptOpenJ9: |     case JavaDistribution.AdoptOpenJ9: | ||||||
|       return new AdoptDistribution(installerOptions, AdoptImplementation.OpenJ9); |       return new AdoptDistribution(installerOptions, AdoptImplementation.OpenJ9); | ||||||
|  |     case JavaDistribution.Temurin: | ||||||
|  |       return new TemurinDistribution(installerOptions, TemurinImplementation.Hotspot); | ||||||
|     case JavaDistribution.Zulu: |     case JavaDistribution.Zulu: | ||||||
|       return new ZuluDistribution(installerOptions); |       return new ZuluDistribution(installerOptions); | ||||||
|     default: |     default: | ||||||
|   | |||||||
							
								
								
									
										155
									
								
								src/distributions/temurin/installer.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										155
									
								
								src/distributions/temurin/installer.ts
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,155 @@ | |||||||
|  | import * as core from '@actions/core'; | ||||||
|  | import * as tc from '@actions/tool-cache'; | ||||||
|  |  | ||||||
|  | import fs from 'fs'; | ||||||
|  | import path from 'path'; | ||||||
|  | import semver from 'semver'; | ||||||
|  |  | ||||||
|  | import { JavaBase } from '../base-installer'; | ||||||
|  | import { ITemurinAvailableVersions } from './models'; | ||||||
|  | import { JavaDownloadRelease, JavaInstallerOptions, JavaInstallerResults } from '../base-models'; | ||||||
|  | import { extractJdkFile, getDownloadArchiveExtension, isVersionSatisfies } from '../../util'; | ||||||
|  |  | ||||||
|  | export enum TemurinImplementation { | ||||||
|  |   Hotspot = 'Hotspot' | ||||||
|  | } | ||||||
|  |  | ||||||
|  | export class TemurinDistribution extends JavaBase { | ||||||
|  |   constructor( | ||||||
|  |     installerOptions: JavaInstallerOptions, | ||||||
|  |     private readonly jvmImpl: TemurinImplementation | ||||||
|  |   ) { | ||||||
|  |     super(`Temurin-${jvmImpl}`, installerOptions); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   protected async findPackageForDownload(version: string): Promise<JavaDownloadRelease> { | ||||||
|  |     const availableVersionsRaw = await this.getAvailableVersions(); | ||||||
|  |     const availableVersionsWithBinaries = availableVersionsRaw | ||||||
|  |       .filter(item => item.binaries.length > 0) | ||||||
|  |       .map(item => { | ||||||
|  |         // normalize 17.0.0-beta+33.0.202107301459 to 17.0.0+33.0.202107301459 for earlier access versions | ||||||
|  |         const formattedVersion = this.stable | ||||||
|  |           ? item.version_data.semver | ||||||
|  |           : item.version_data.semver.replace('-beta+', '+'); | ||||||
|  |         return { | ||||||
|  |           version: formattedVersion, | ||||||
|  |           url: item.binaries[0].package.link | ||||||
|  |         } as JavaDownloadRelease; | ||||||
|  |       }); | ||||||
|  |  | ||||||
|  |     const satisfiedVersions = availableVersionsWithBinaries | ||||||
|  |       .filter(item => isVersionSatisfies(version, item.version)) | ||||||
|  |       .sort((a, b) => { | ||||||
|  |         return -semver.compareBuild(a.version, b.version); | ||||||
|  |       }); | ||||||
|  |  | ||||||
|  |     const resolvedFullVersion = satisfiedVersions.length > 0 ? satisfiedVersions[0] : null; | ||||||
|  |     if (!resolvedFullVersion) { | ||||||
|  |       const availableOptions = availableVersionsWithBinaries.map(item => item.version).join(', '); | ||||||
|  |       const availableOptionsMessage = availableOptions | ||||||
|  |         ? `\nAvailable versions: ${availableOptions}` | ||||||
|  |         : ''; | ||||||
|  |       throw new Error( | ||||||
|  |         `Could not find satisfied version for SemVer '${version}'. ${availableOptionsMessage}` | ||||||
|  |       ); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     return resolvedFullVersion; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   protected async downloadTool(javaRelease: JavaDownloadRelease): Promise<JavaInstallerResults> { | ||||||
|  |     let javaPath: string; | ||||||
|  |     let extractedJavaPath: string; | ||||||
|  |  | ||||||
|  |     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(); | ||||||
|  |  | ||||||
|  |     extractedJavaPath = await extractJdkFile(javaArchivePath, extension); | ||||||
|  |  | ||||||
|  |     const archiveName = fs.readdirSync(extractedJavaPath)[0]; | ||||||
|  |     const archivePath = path.join(extractedJavaPath, archiveName); | ||||||
|  |     const version = this.getToolcacheVersionName(javaRelease.version); | ||||||
|  |  | ||||||
|  |     javaPath = await tc.cacheDir(archivePath, this.toolcacheFolderName, version, this.architecture); | ||||||
|  |  | ||||||
|  |     return { version: javaRelease.version, path: javaPath }; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   protected get toolcacheFolderName(): string { | ||||||
|  |     return super.toolcacheFolderName; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   private async getAvailableVersions(): Promise<ITemurinAvailableVersions[]> { | ||||||
|  |     const platform = this.getPlatformOption(); | ||||||
|  |     const arch = this.architecture; | ||||||
|  |     const imageType = this.packageType; | ||||||
|  |     const versionRange = encodeURI('[1.0,100.0]'); // retrieve all available versions | ||||||
|  |     const releaseType = this.stable ? 'ga' : 'ea'; | ||||||
|  |  | ||||||
|  |     console.time('temurin-retrieve-available-versions'); | ||||||
|  |  | ||||||
|  |     const baseRequestArguments = [ | ||||||
|  |       `project=jdk`, | ||||||
|  |       'vendor=adoptium', | ||||||
|  |       `heap_size=normal`, | ||||||
|  |       'sort_method=DEFAULT', | ||||||
|  |       'sort_order=DESC', | ||||||
|  |       `os=${platform}`, | ||||||
|  |       `architecture=${arch}`, | ||||||
|  |       `image_type=${imageType}`, | ||||||
|  |       `release_type=${releaseType}`, | ||||||
|  |       `jvm_impl=${this.jvmImpl.toLowerCase()}` | ||||||
|  |     ].join('&'); | ||||||
|  |  | ||||||
|  |     // need to iterate through all pages to retrieve the list of all versions | ||||||
|  |     // Adoptium API doesn't provide way to retrieve the count of pages to iterate so infinity loop | ||||||
|  |     let page_index = 0; | ||||||
|  |     const availableVersions: ITemurinAvailableVersions[] = []; | ||||||
|  |     while (true) { | ||||||
|  |       const requestArguments = `${baseRequestArguments}&page_size=20&page=${page_index}`; | ||||||
|  |       const availableVersionsUrl = `https://api.adoptium.net/v3/assets/version/${versionRange}?${requestArguments}`; | ||||||
|  |       if (core.isDebug() && page_index === 0) { | ||||||
|  |         // url is identical except page_index so print it once for debug | ||||||
|  |         core.debug(`Gathering available versions from '${availableVersionsUrl}'`); | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       const paginationPage = ( | ||||||
|  |         await this.http.getJson<ITemurinAvailableVersions[]>(availableVersionsUrl) | ||||||
|  |       ).result; | ||||||
|  |       if (paginationPage === null || paginationPage.length === 0) { | ||||||
|  |         // break infinity loop because we have reached end of pagination | ||||||
|  |         break; | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       availableVersions.push(...paginationPage); | ||||||
|  |       page_index++; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     if (core.isDebug()) { | ||||||
|  |       core.startGroup('Print information about available versions'); | ||||||
|  |       console.timeEnd('temurin-retrieve-available-versions'); | ||||||
|  |       console.log(`Available versions: [${availableVersions.length}]`); | ||||||
|  |       console.log(availableVersions.map(item => item.version_data.semver).join(', ')); | ||||||
|  |       core.endGroup(); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     return availableVersions; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   private getPlatformOption(): string { | ||||||
|  |     // Adoptium has own platform names so need to map them | ||||||
|  |     switch (process.platform) { | ||||||
|  |       case 'darwin': | ||||||
|  |         return 'mac'; | ||||||
|  |       case 'win32': | ||||||
|  |         return 'windows'; | ||||||
|  |       default: | ||||||
|  |         return process.platform; | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  | } | ||||||
							
								
								
									
										38
									
								
								src/distributions/temurin/models.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										38
									
								
								src/distributions/temurin/models.ts
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,38 @@ | |||||||
|  | // Models from https://api.adoptium.net/q/swagger-ui/#/Assets/searchReleasesByVersion | ||||||
|  |  | ||||||
|  | export interface ITemurinAvailableVersions { | ||||||
|  |   binaries: [ | ||||||
|  |     { | ||||||
|  |       architecture: string; | ||||||
|  |       heap_size: string; | ||||||
|  |       image_type: string; | ||||||
|  |       jvm_impl: string; | ||||||
|  |       os: string; | ||||||
|  |       package: { | ||||||
|  |         checksum: string; | ||||||
|  |         checksum_link: string; | ||||||
|  |         download_count: number; | ||||||
|  |         link: string; | ||||||
|  |         metadata_link: string; | ||||||
|  |         name: string; | ||||||
|  |         size: string; | ||||||
|  |       }; | ||||||
|  |       project: string; | ||||||
|  |       scm_ref: string; | ||||||
|  |       updated_at: string; | ||||||
|  |     } | ||||||
|  |   ]; | ||||||
|  |   id: string; | ||||||
|  |   release_link: string; | ||||||
|  |   release_name: string; | ||||||
|  |   release_type: string; | ||||||
|  |   vendor: string; | ||||||
|  |   version_data: { | ||||||
|  |     build: number; | ||||||
|  |     major: number; | ||||||
|  |     minor: number; | ||||||
|  |     openjdk_version: string; | ||||||
|  |     security: string; | ||||||
|  |     semver: string; | ||||||
|  |   }; | ||||||
|  | } | ||||||
		Reference in New Issue
	
	Block a user
	 Jochen Schalanda
					Jochen Schalanda