mirror of
				https://github.com/actions/setup-java.git
				synced 2025-11-04 08:53:32 +00:00 
			
		
		
		
	Merge branch 'master' into patch-1
This commit is contained in:
		
						commit
						4880cc0c18
					
				
							
								
								
									
										2
									
								
								.github/workflows/workflow.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.github/workflows/workflow.yml
									
									
									
									
										vendored
									
									
								
							@ -14,7 +14,7 @@ jobs:
 | 
				
			|||||||
    - name: Set Node.js 10.x
 | 
					    - name: Set Node.js 10.x
 | 
				
			||||||
      uses: actions/setup-node@master
 | 
					      uses: actions/setup-node@master
 | 
				
			||||||
      with:
 | 
					      with:
 | 
				
			||||||
        version: 10.x
 | 
					        node-version: 10.x
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    - name: npm install
 | 
					    - name: npm install
 | 
				
			||||||
      run: npm install
 | 
					      run: npm install
 | 
				
			||||||
 | 
				
			|||||||
@ -6,7 +6,7 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
This action sets up a java environment for use in actions by:
 | 
					This action sets up a java environment for use in actions by:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- optionally downloading and caching a version of java by version and adding to PATH. Downloads from [Azul's Zulu distribution](http://static.azul.com/zulu/bin/).
 | 
					- optionally downloading and caching a requested version of java by version and adding to PATH. Default downloads are populated from the [Zulu Community distribution of OpenJDK](http://static.azul.com/zulu/bin/)
 | 
				
			||||||
- registering problem matchers for error output
 | 
					- registering problem matchers for error output
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Usage
 | 
					# Usage
 | 
				
			||||||
@ -20,6 +20,7 @@ steps:
 | 
				
			|||||||
- uses: actions/setup-java@v1
 | 
					- uses: actions/setup-java@v1
 | 
				
			||||||
  with:
 | 
					  with:
 | 
				
			||||||
    java-version: '9.0.4' // The JDK version to make available on the path. Takes a whole or semver JDK version, or 1.x syntax (e.g. 1.8 => Jdk 8.x). To specify a specific version for JDK 8 or older use the following pattern (8.0.x)
 | 
					    java-version: '9.0.4' // The JDK version to make available on the path. Takes a whole or semver JDK version, or 1.x syntax (e.g. 1.8 => Jdk 8.x). To specify a specific version for JDK 8 or older use the following pattern (8.0.x)
 | 
				
			||||||
 | 
					    java-package: jdk // (jre, jdk, or jdk+fx) - defaults to jdk
 | 
				
			||||||
    architecture: x64 // (x64 or x86) - defaults to x64
 | 
					    architecture: x64 // (x64 or x86) - defaults to x64
 | 
				
			||||||
- run: java -cp java HelloWorldApp
 | 
					- run: java -cp java HelloWorldApp
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
@ -32,7 +33,7 @@ steps:
 | 
				
			|||||||
  with:
 | 
					  with:
 | 
				
			||||||
    java-version: '4.0.0'
 | 
					    java-version: '4.0.0'
 | 
				
			||||||
    architecture: x64
 | 
					    architecture: x64
 | 
				
			||||||
    jdkFile: <path to jdkFile> # Optional - jdkFile to install java from. Useful for versions not supported by Azul
 | 
					    jdkFile: <path to jdkFile> # Optional - jdkFile to install java from. Useful for versions not found on Zulu Community CDN
 | 
				
			||||||
- run: java -cp java HelloWorldApp
 | 
					- run: java -cp java HelloWorldApp
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -43,7 +44,8 @@ jobs:
 | 
				
			|||||||
    runs-on: ubuntu-16.04
 | 
					    runs-on: ubuntu-16.04
 | 
				
			||||||
    strategy:
 | 
					    strategy:
 | 
				
			||||||
      matrix:
 | 
					      matrix:
 | 
				
			||||||
        java: [ '1.6', '9.0.x', '12.0.2' ]
 | 
					        # test against latest update of each major Java version, as well as specific updates of LTS versions:
 | 
				
			||||||
 | 
					        java: [ 1.6, 6.0.83, 7, 7.0.181, 8, 8.0.192, 9.0,x, 10, 11.0.x, 11.0.3, 12, 13 ]
 | 
				
			||||||
    name: Java ${{ matrix.java }} sample
 | 
					    name: Java ${{ matrix.java }} sample
 | 
				
			||||||
    steps:
 | 
					    steps:
 | 
				
			||||||
      - uses: actions/checkout@master
 | 
					      - uses: actions/checkout@master
 | 
				
			||||||
@ -51,7 +53,6 @@ jobs:
 | 
				
			|||||||
        uses: actions/setup-java@v1
 | 
					        uses: actions/setup-java@v1
 | 
				
			||||||
        with:
 | 
					        with:
 | 
				
			||||||
          java-version: ${{ matrix.java }}
 | 
					          java-version: ${{ matrix.java }}
 | 
				
			||||||
          architecture: x64
 | 
					 | 
				
			||||||
      - run: java -cp java HelloWorldApp
 | 
					      - run: java -cp java HelloWorldApp
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -52,8 +52,8 @@ describe('installer tests', () => {
 | 
				
			|||||||
  }, 100000);
 | 
					  }, 100000);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  it('Installs version of Java from jdkFile if no matching version is installed', async () => {
 | 
					  it('Installs version of Java from jdkFile if no matching version is installed', async () => {
 | 
				
			||||||
    await installer.getJava('12', 'x64', javaFilePath);
 | 
					    await installer.getJava('12', 'x64', javaFilePath, 'jdk');
 | 
				
			||||||
    const JavaDir = path.join(toolDir, 'Java', '12.0.0', 'x64');
 | 
					    const JavaDir = path.join(toolDir, 'jdk', '12.0.0', 'x64');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    expect(fs.existsSync(`${JavaDir}.complete`)).toBe(true);
 | 
					    expect(fs.existsSync(`${JavaDir}.complete`)).toBe(true);
 | 
				
			||||||
    expect(fs.existsSync(path.join(JavaDir, 'bin'))).toBe(true);
 | 
					    expect(fs.existsSync(path.join(JavaDir, 'bin'))).toBe(true);
 | 
				
			||||||
@ -62,7 +62,7 @@ describe('installer tests', () => {
 | 
				
			|||||||
  it('Throws if invalid directory to jdk', async () => {
 | 
					  it('Throws if invalid directory to jdk', async () => {
 | 
				
			||||||
    let thrown = false;
 | 
					    let thrown = false;
 | 
				
			||||||
    try {
 | 
					    try {
 | 
				
			||||||
      await installer.getJava('1000', 'x64', 'bad path');
 | 
					      await installer.getJava('1000', 'x64', 'bad path', 'jdk');
 | 
				
			||||||
    } catch {
 | 
					    } catch {
 | 
				
			||||||
      thrown = true;
 | 
					      thrown = true;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@ -70,33 +70,59 @@ describe('installer tests', () => {
 | 
				
			|||||||
  });
 | 
					  });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  it('Downloads java if no file given', async () => {
 | 
					  it('Downloads java if no file given', async () => {
 | 
				
			||||||
    await installer.getJava('8.0.102', 'x64', '');
 | 
					    await installer.getJava('8.0.102', 'x64', '', 'jdk');
 | 
				
			||||||
    const JavaDir = path.join(toolDir, 'Java', '8.0.102', 'x64');
 | 
					    const JavaDir = path.join(toolDir, 'jdk', '8.0.102', 'x64');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    expect(fs.existsSync(`${JavaDir}.complete`)).toBe(true);
 | 
					    expect(fs.existsSync(`${JavaDir}.complete`)).toBe(true);
 | 
				
			||||||
    expect(fs.existsSync(path.join(JavaDir, 'bin'))).toBe(true);
 | 
					    expect(fs.existsSync(path.join(JavaDir, 'bin'))).toBe(true);
 | 
				
			||||||
  }, 100000);
 | 
					  }, 100000);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  it('Downloads java with 1.x syntax', async () => {
 | 
					  it('Downloads java with 1.x syntax', async () => {
 | 
				
			||||||
    await installer.getJava('1.10', 'x64', '');
 | 
					    await installer.getJava('1.10', 'x64', '', 'jdk');
 | 
				
			||||||
    const JavaDir = path.join(toolDir, 'Java', '10.0.2', 'x64');
 | 
					    const JavaDir = path.join(toolDir, 'jdk', '10.0.2', 'x64');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    expect(fs.existsSync(`${JavaDir}.complete`)).toBe(true);
 | 
					    expect(fs.existsSync(`${JavaDir}.complete`)).toBe(true);
 | 
				
			||||||
    expect(fs.existsSync(path.join(JavaDir, 'bin'))).toBe(true);
 | 
					    expect(fs.existsSync(path.join(JavaDir, 'bin'))).toBe(true);
 | 
				
			||||||
  }, 100000);
 | 
					  }, 100000);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  it('Downloads java with normal semver syntax', async () => {
 | 
					  it('Downloads java with normal semver syntax', async () => {
 | 
				
			||||||
    await installer.getJava('9.0.x', 'x64', '');
 | 
					    await installer.getJava('9.0.x', 'x64', '', 'jdk');
 | 
				
			||||||
    const JavaDir = path.join(toolDir, 'Java', '9.0.7', 'x64');
 | 
					    const JavaDir = path.join(toolDir, 'jdk', '9.0.7', 'x64');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    expect(fs.existsSync(`${JavaDir}.complete`)).toBe(true);
 | 
					    expect(fs.existsSync(`${JavaDir}.complete`)).toBe(true);
 | 
				
			||||||
    expect(fs.existsSync(path.join(JavaDir, 'bin'))).toBe(true);
 | 
					    expect(fs.existsSync(path.join(JavaDir, 'bin'))).toBe(true);
 | 
				
			||||||
  }, 100000);
 | 
					  }, 100000);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  it('Downloads java if package is jre', async () => {
 | 
				
			||||||
 | 
					    await installer.getJava('8.0.222', 'x64', '', 'jre');
 | 
				
			||||||
 | 
					    const JavaDir = path.join(toolDir, 'jre', '8.0.222', 'x64');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    expect(fs.existsSync(`${JavaDir}.complete`)).toBe(true);
 | 
				
			||||||
 | 
					    expect(fs.existsSync(path.join(JavaDir, 'bin'))).toBe(true);
 | 
				
			||||||
 | 
					  }, 100000);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  it('Downloads java if package is jdk+fx', async () => {
 | 
				
			||||||
 | 
					    await installer.getJava('8.0.222', 'x64', '', 'jdk+fx');
 | 
				
			||||||
 | 
					    const JavaDir = path.join(toolDir, 'jdk+fx', '8.0.222', 'x64');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    expect(fs.existsSync(`${JavaDir}.complete`)).toBe(true);
 | 
				
			||||||
 | 
					    expect(fs.existsSync(path.join(JavaDir, 'bin'))).toBe(true);
 | 
				
			||||||
 | 
					  }, 100000);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  it('Throws if invalid java package is specified', async () => {
 | 
				
			||||||
 | 
					    let thrown = false;
 | 
				
			||||||
 | 
					    try {
 | 
				
			||||||
 | 
					      await installer.getJava('8.0.222', 'x64', '', 'bad jdk');
 | 
				
			||||||
 | 
					    } catch {
 | 
				
			||||||
 | 
					      thrown = true;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    expect(thrown).toBe(true);
 | 
				
			||||||
 | 
					  });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  it('Throws if invalid directory to jdk', async () => {
 | 
					  it('Throws if invalid directory to jdk', async () => {
 | 
				
			||||||
    let thrown = false;
 | 
					    let thrown = false;
 | 
				
			||||||
    try {
 | 
					    try {
 | 
				
			||||||
      await installer.getJava('1000', 'x64', 'bad path');
 | 
					      await installer.getJava('1000', 'x64', 'bad path', 'jdk');
 | 
				
			||||||
    } catch {
 | 
					    } catch {
 | 
				
			||||||
      thrown = true;
 | 
					      thrown = true;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@ -104,25 +130,26 @@ describe('installer tests', () => {
 | 
				
			|||||||
  });
 | 
					  });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  it('Uses version of Java installed in cache', async () => {
 | 
					  it('Uses version of Java installed in cache', async () => {
 | 
				
			||||||
    const JavaDir: string = path.join(toolDir, 'Java', '250.0.0', 'x64');
 | 
					    const JavaDir: string = path.join(toolDir, 'jdk', '250.0.0', 'x64');
 | 
				
			||||||
    await io.mkdirP(JavaDir);
 | 
					    await io.mkdirP(JavaDir);
 | 
				
			||||||
    fs.writeFileSync(`${JavaDir}.complete`, 'hello');
 | 
					    fs.writeFileSync(`${JavaDir}.complete`, 'hello');
 | 
				
			||||||
    // This will throw if it doesn't find it in the cache (because no such version exists)
 | 
					    // This will throw if it doesn't find it in the cache (because no such version exists)
 | 
				
			||||||
    await installer.getJava(
 | 
					    await installer.getJava(
 | 
				
			||||||
      '250',
 | 
					      '250',
 | 
				
			||||||
      'x64',
 | 
					      'x64',
 | 
				
			||||||
      'path shouldnt matter, found in cache'
 | 
					      'path shouldnt matter, found in cache',
 | 
				
			||||||
 | 
					      'jdk'
 | 
				
			||||||
    );
 | 
					    );
 | 
				
			||||||
    return;
 | 
					    return;
 | 
				
			||||||
  });
 | 
					  });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  it('Doesnt use version of Java that was only partially installed in cache', async () => {
 | 
					  it('Doesnt use version of Java that was only partially installed in cache', async () => {
 | 
				
			||||||
    const JavaDir: string = path.join(toolDir, 'Java', '251.0.0', 'x64');
 | 
					    const JavaDir: string = path.join(toolDir, 'jdk', '251.0.0', 'x64');
 | 
				
			||||||
    await io.mkdirP(JavaDir);
 | 
					    await io.mkdirP(JavaDir);
 | 
				
			||||||
    let thrown = false;
 | 
					    let thrown = false;
 | 
				
			||||||
    try {
 | 
					    try {
 | 
				
			||||||
      // This will throw if it doesn't find it in the cache (because no such version exists)
 | 
					      // This will throw if it doesn't find it in the cache (because no such version exists)
 | 
				
			||||||
      await installer.getJava('251', 'x64', 'bad path');
 | 
					      await installer.getJava('251', 'x64', 'bad path', 'jdk');
 | 
				
			||||||
    } catch {
 | 
					    } catch {
 | 
				
			||||||
      thrown = true;
 | 
					      thrown = true;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										16
									
								
								action.yml
									
									
									
									
									
								
							
							
						
						
									
										16
									
								
								action.yml
									
									
									
									
									
								
							@ -3,19 +3,19 @@ description: 'Set up a specific version of the Java JDK and add the command-line
 | 
				
			|||||||
author: 'GitHub'
 | 
					author: 'GitHub'
 | 
				
			||||||
inputs: 
 | 
					inputs: 
 | 
				
			||||||
  java-version:
 | 
					  java-version:
 | 
				
			||||||
    description: 'The JDK version to make available on the path. Takes a whole or semver JDK version, or 1.x syntax (e.g. 1.8 => JDK 8.x)'
 | 
					    description: 'The Java version to make available on the path. Takes a whole or semver Java version, or 1.x syntax (e.g. 1.8 => Java 8.x)'
 | 
				
			||||||
    required: true
 | 
					 | 
				
			||||||
  architecture:
 | 
					 | 
				
			||||||
    description: 'The architecture (x86, x64) of the JDK.'
 | 
					 | 
				
			||||||
    required: true
 | 
					    required: true
 | 
				
			||||||
 | 
					java-package:
 | 
				
			||||||
 | 
					    description: 'The package type (jre, jdk, jdk+fx)'
 | 
				
			||||||
 | 
					    required: false
 | 
				
			||||||
 | 
					    default: 'jdk'
 | 
				
			||||||
 | 
					architecture:
 | 
				
			||||||
 | 
					    description: 'The architecture (x86, x64) of the package.'
 | 
				
			||||||
 | 
					    required: false
 | 
				
			||||||
    default: 'x64'
 | 
					    default: 'x64'
 | 
				
			||||||
  jdkFile:
 | 
					  jdkFile:
 | 
				
			||||||
    description: 'Path to where the compressed JDK is located. The path could be in your source repository or a local path on the agent.'
 | 
					    description: 'Path to where the compressed JDK is located. The path could be in your source repository or a local path on the agent.'
 | 
				
			||||||
    required: false
 | 
					    required: false
 | 
				
			||||||
# Deprecated option, do not use. Will not be supported after October 1, 2019
 | 
					 | 
				
			||||||
  version:
 | 
					 | 
				
			||||||
    description: 'Deprecated. Use java-version instead. Will not be supported after October 1, 2019'
 | 
					 | 
				
			||||||
    deprecationMessage: 'The version property will not be supported after October 1, 2019. Use java-version instead'
 | 
					 | 
				
			||||||
runs:
 | 
					runs:
 | 
				
			||||||
  using: 'node12'
 | 
					  using: 'node12'
 | 
				
			||||||
  main: 'lib/setup-java.js'
 | 
					  main: 'lib/setup-java.js'
 | 
				
			||||||
 | 
				
			|||||||
@ -41,9 +41,9 @@ if (!tempDirectory) {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
    tempDirectory = path.join(baseLocation, 'actions', 'temp');
 | 
					    tempDirectory = path.join(baseLocation, 'actions', 'temp');
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
function getJava(version, arch, jdkFile) {
 | 
					function getJava(version, arch, jdkFile, javaPackage) {
 | 
				
			||||||
    return __awaiter(this, void 0, void 0, function* () {
 | 
					    return __awaiter(this, void 0, void 0, function* () {
 | 
				
			||||||
        let toolPath = tc.find('Java', version);
 | 
					        let toolPath = tc.find(javaPackage, version);
 | 
				
			||||||
        if (toolPath) {
 | 
					        if (toolPath) {
 | 
				
			||||||
            core.debug(`Tool found in cache ${toolPath}`);
 | 
					            core.debug(`Tool found in cache ${toolPath}`);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
@ -54,7 +54,7 @@ function getJava(version, arch, jdkFile) {
 | 
				
			|||||||
                let http = new httpm.HttpClient('setup-java');
 | 
					                let http = new httpm.HttpClient('setup-java');
 | 
				
			||||||
                let contents = yield (yield http.get('https://static.azul.com/zulu/bin/')).readBody();
 | 
					                let contents = yield (yield http.get('https://static.azul.com/zulu/bin/')).readBody();
 | 
				
			||||||
                let refs = contents.match(/<a href.*\">/gi) || [];
 | 
					                let refs = contents.match(/<a href.*\">/gi) || [];
 | 
				
			||||||
                const downloadInfo = getDownloadInfo(refs, version);
 | 
					                const downloadInfo = getDownloadInfo(refs, version, javaPackage);
 | 
				
			||||||
                jdkFile = yield tc.downloadTool(downloadInfo.url);
 | 
					                jdkFile = yield tc.downloadTool(downloadInfo.url);
 | 
				
			||||||
                version = downloadInfo.version;
 | 
					                version = downloadInfo.version;
 | 
				
			||||||
                compressedFileExtension = IS_WINDOWS ? '.zip' : '.tar.gz';
 | 
					                compressedFileExtension = IS_WINDOWS ? '.zip' : '.tar.gz';
 | 
				
			||||||
@ -66,7 +66,7 @@ function getJava(version, arch, jdkFile) {
 | 
				
			|||||||
            let tempDir = path.join(tempDirectory, 'temp_' + Math.floor(Math.random() * 2000000000));
 | 
					            let tempDir = path.join(tempDirectory, 'temp_' + Math.floor(Math.random() * 2000000000));
 | 
				
			||||||
            const jdkDir = yield unzipJavaDownload(jdkFile, compressedFileExtension, tempDir);
 | 
					            const jdkDir = yield unzipJavaDownload(jdkFile, compressedFileExtension, tempDir);
 | 
				
			||||||
            core.debug(`jdk extracted to ${jdkDir}`);
 | 
					            core.debug(`jdk extracted to ${jdkDir}`);
 | 
				
			||||||
            toolPath = yield tc.cacheDir(jdkDir, 'Java', getCacheVersionString(version), arch);
 | 
					            toolPath = yield tc.cacheDir(jdkDir, javaPackage, getCacheVersionString(version), arch);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        let extendedJavaHome = 'JAVA_HOME_' + version + '_' + arch;
 | 
					        let extendedJavaHome = 'JAVA_HOME_' + version + '_' + arch;
 | 
				
			||||||
        core.exportVariable('JAVA_HOME', toolPath);
 | 
					        core.exportVariable('JAVA_HOME', toolPath);
 | 
				
			||||||
@ -162,7 +162,7 @@ function unzipJavaDownload(repoRoot, fileEnding, destinationFolder, extension) {
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
    });
 | 
					    });
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
function getDownloadInfo(refs, version) {
 | 
					function getDownloadInfo(refs, version, javaPackage) {
 | 
				
			||||||
    version = normalizeVersion(version);
 | 
					    version = normalizeVersion(version);
 | 
				
			||||||
    let extension = '';
 | 
					    let extension = '';
 | 
				
			||||||
    if (IS_WINDOWS) {
 | 
					    if (IS_WINDOWS) {
 | 
				
			||||||
@ -176,22 +176,39 @@ function getDownloadInfo(refs, version) {
 | 
				
			|||||||
            extension = `-linux_x64.tar.gz`;
 | 
					            extension = `-linux_x64.tar.gz`;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					    let pkgRegexp = new RegExp('');
 | 
				
			||||||
 | 
					    let pkgTypeLength = 0;
 | 
				
			||||||
 | 
					    if (javaPackage === 'jdk') {
 | 
				
			||||||
 | 
					        pkgRegexp = /jdk.*-/gi;
 | 
				
			||||||
 | 
					        pkgTypeLength = 'jdk'.length;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    else if (javaPackage == 'jre') {
 | 
				
			||||||
 | 
					        pkgRegexp = /jre.*-/gi;
 | 
				
			||||||
 | 
					        pkgTypeLength = 'jre'.length;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    else if (javaPackage == 'jdk+fx') {
 | 
				
			||||||
 | 
					        pkgRegexp = /fx-jdk.*-/gi;
 | 
				
			||||||
 | 
					        pkgTypeLength = 'fx-jdk'.length;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    else {
 | 
				
			||||||
 | 
					        throw new Error(`package argument ${javaPackage} is not in [jdk | jre | jdk+fx]`);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
    // Maps version to url
 | 
					    // Maps version to url
 | 
				
			||||||
    let versionMap = new Map();
 | 
					    let versionMap = new Map();
 | 
				
			||||||
    // Filter by platform
 | 
					    // Filter by platform
 | 
				
			||||||
    refs.forEach(ref => {
 | 
					    refs.forEach(ref => {
 | 
				
			||||||
        if (ref.indexOf(extension) < 0) {
 | 
					        if (!ref.endsWith(extension + '">')) {
 | 
				
			||||||
            return;
 | 
					            return;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        // If we haven't returned, means we're looking at the correct platform
 | 
					        // If we haven't returned, means we're looking at the correct platform
 | 
				
			||||||
        let versions = ref.match(/jdk.*-/gi) || [];
 | 
					        let versions = ref.match(pkgRegexp) || [];
 | 
				
			||||||
        if (versions.length > 1) {
 | 
					        if (versions.length > 1) {
 | 
				
			||||||
            throw new Error(`Invalid ref received from https://static.azul.com/zulu/bin/: ${ref}`);
 | 
					            throw new Error(`Invalid ref received from https://static.azul.com/zulu/bin/: ${ref}`);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        if (versions.length == 0) {
 | 
					        if (versions.length == 0) {
 | 
				
			||||||
            return;
 | 
					            return;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        const refVersion = versions[0].slice('jdk'.length, versions[0].length - 1);
 | 
					        const refVersion = versions[0].slice(pkgTypeLength, versions[0].length - 1);
 | 
				
			||||||
        if (semver.satisfies(refVersion, version)) {
 | 
					        if (semver.satisfies(refVersion, version)) {
 | 
				
			||||||
            versionMap.set(refVersion, 'https://static.azul.com/zulu/bin/' +
 | 
					            versionMap.set(refVersion, 'https://static.azul.com/zulu/bin/' +
 | 
				
			||||||
                ref.slice('<a href="'.length, ref.length - '">'.length));
 | 
					                ref.slice('<a href="'.length, ref.length - '">'.length));
 | 
				
			||||||
@ -209,7 +226,7 @@ function getDownloadInfo(refs, version) {
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    if (curUrl == '') {
 | 
					    if (curUrl == '') {
 | 
				
			||||||
        throw new Error(`No valid download found for version ${version}. Check https://static.azul.com/zulu/bin/ for a list of valid versions or download your own jdk file and add the jdkFile argument`);
 | 
					        throw new Error(`No valid download found for version ${version} and package ${javaPackage}. Check https://static.azul.com/zulu/bin/ for a list of valid versions or download your own jdk file and add the jdkFile argument`);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    return { version: curVersion, url: curUrl };
 | 
					    return { version: curVersion, url: curUrl };
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -26,8 +26,9 @@ function run() {
 | 
				
			|||||||
                version = core.getInput('java-version', { required: true });
 | 
					                version = core.getInput('java-version', { required: true });
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            const arch = core.getInput('architecture', { required: true });
 | 
					            const arch = core.getInput('architecture', { required: true });
 | 
				
			||||||
 | 
					            const javaPackage = core.getInput('java-package', { required: true });
 | 
				
			||||||
            const jdkFile = core.getInput('jdkFile', { required: false }) || '';
 | 
					            const jdkFile = core.getInput('jdkFile', { required: false }) || '';
 | 
				
			||||||
            yield installer.getJava(version, arch, jdkFile);
 | 
					            yield installer.getJava(version, arch, jdkFile, javaPackage);
 | 
				
			||||||
            const matchersPath = path.join(__dirname, '..', '.github');
 | 
					            const matchersPath = path.join(__dirname, '..', '.github');
 | 
				
			||||||
            console.log(`##[add-matcher]${path.join(matchersPath, 'java.json')}`);
 | 
					            console.log(`##[add-matcher]${path.join(matchersPath, 'java.json')}`);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
				
			|||||||
@ -29,9 +29,10 @@ if (!tempDirectory) {
 | 
				
			|||||||
export async function getJava(
 | 
					export async function getJava(
 | 
				
			||||||
  version: string,
 | 
					  version: string,
 | 
				
			||||||
  arch: string,
 | 
					  arch: string,
 | 
				
			||||||
  jdkFile: string
 | 
					  jdkFile: string,
 | 
				
			||||||
 | 
					  javaPackage: string
 | 
				
			||||||
): Promise<void> {
 | 
					): Promise<void> {
 | 
				
			||||||
  let toolPath = tc.find('Java', version);
 | 
					  let toolPath = tc.find(javaPackage, version);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (toolPath) {
 | 
					  if (toolPath) {
 | 
				
			||||||
    core.debug(`Tool found in cache ${toolPath}`);
 | 
					    core.debug(`Tool found in cache ${toolPath}`);
 | 
				
			||||||
@ -45,7 +46,7 @@ export async function getJava(
 | 
				
			|||||||
      )).readBody();
 | 
					      )).readBody();
 | 
				
			||||||
      let refs = contents.match(/<a href.*\">/gi) || [];
 | 
					      let refs = contents.match(/<a href.*\">/gi) || [];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      const downloadInfo = getDownloadInfo(refs, version);
 | 
					      const downloadInfo = getDownloadInfo(refs, version, javaPackage);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      jdkFile = await tc.downloadTool(downloadInfo.url);
 | 
					      jdkFile = await tc.downloadTool(downloadInfo.url);
 | 
				
			||||||
      version = downloadInfo.version;
 | 
					      version = downloadInfo.version;
 | 
				
			||||||
@ -66,7 +67,7 @@ export async function getJava(
 | 
				
			|||||||
    core.debug(`jdk extracted to ${jdkDir}`);
 | 
					    core.debug(`jdk extracted to ${jdkDir}`);
 | 
				
			||||||
    toolPath = await tc.cacheDir(
 | 
					    toolPath = await tc.cacheDir(
 | 
				
			||||||
      jdkDir,
 | 
					      jdkDir,
 | 
				
			||||||
      'Java',
 | 
					      javaPackage,
 | 
				
			||||||
      getCacheVersionString(version),
 | 
					      getCacheVersionString(version),
 | 
				
			||||||
      arch
 | 
					      arch
 | 
				
			||||||
    );
 | 
					    );
 | 
				
			||||||
@ -173,7 +174,8 @@ async function unzipJavaDownload(
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
function getDownloadInfo(
 | 
					function getDownloadInfo(
 | 
				
			||||||
  refs: string[],
 | 
					  refs: string[],
 | 
				
			||||||
  version: string
 | 
					  version: string,
 | 
				
			||||||
 | 
					  javaPackage: string
 | 
				
			||||||
): {version: string; url: string} {
 | 
					): {version: string; url: string} {
 | 
				
			||||||
  version = normalizeVersion(version);
 | 
					  version = normalizeVersion(version);
 | 
				
			||||||
  let extension = '';
 | 
					  let extension = '';
 | 
				
			||||||
@ -187,17 +189,34 @@ function getDownloadInfo(
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  let pkgRegexp = new RegExp('');
 | 
				
			||||||
 | 
					  let pkgTypeLength = 0;
 | 
				
			||||||
 | 
					  if (javaPackage === 'jdk') {
 | 
				
			||||||
 | 
					    pkgRegexp = /jdk.*-/gi;
 | 
				
			||||||
 | 
					    pkgTypeLength = 'jdk'.length;
 | 
				
			||||||
 | 
					  } else if (javaPackage == 'jre') {
 | 
				
			||||||
 | 
					    pkgRegexp = /jre.*-/gi;
 | 
				
			||||||
 | 
					    pkgTypeLength = 'jre'.length;
 | 
				
			||||||
 | 
					  } else if (javaPackage == 'jdk+fx') {
 | 
				
			||||||
 | 
					    pkgRegexp = /fx-jdk.*-/gi;
 | 
				
			||||||
 | 
					    pkgTypeLength = 'fx-jdk'.length;
 | 
				
			||||||
 | 
					  } else {
 | 
				
			||||||
 | 
					    throw new Error(
 | 
				
			||||||
 | 
					      `package argument ${javaPackage} is not in [jdk | jre | jdk+fx]`
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // Maps version to url
 | 
					  // Maps version to url
 | 
				
			||||||
  let versionMap = new Map();
 | 
					  let versionMap = new Map();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // Filter by platform
 | 
					  // Filter by platform
 | 
				
			||||||
  refs.forEach(ref => {
 | 
					  refs.forEach(ref => {
 | 
				
			||||||
    if (ref.indexOf(extension) < 0) {
 | 
					    if (!ref.endsWith(extension + '">')) {
 | 
				
			||||||
      return;
 | 
					      return;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // If we haven't returned, means we're looking at the correct platform
 | 
					    // If we haven't returned, means we're looking at the correct platform
 | 
				
			||||||
    let versions = ref.match(/jdk.*-/gi) || [];
 | 
					    let versions = ref.match(pkgRegexp) || [];
 | 
				
			||||||
    if (versions.length > 1) {
 | 
					    if (versions.length > 1) {
 | 
				
			||||||
      throw new Error(
 | 
					      throw new Error(
 | 
				
			||||||
        `Invalid ref received from https://static.azul.com/zulu/bin/: ${ref}`
 | 
					        `Invalid ref received from https://static.azul.com/zulu/bin/: ${ref}`
 | 
				
			||||||
@ -206,7 +225,7 @@ function getDownloadInfo(
 | 
				
			|||||||
    if (versions.length == 0) {
 | 
					    if (versions.length == 0) {
 | 
				
			||||||
      return;
 | 
					      return;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    const refVersion = versions[0].slice('jdk'.length, versions[0].length - 1);
 | 
					    const refVersion = versions[0].slice(pkgTypeLength, versions[0].length - 1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (semver.satisfies(refVersion, version)) {
 | 
					    if (semver.satisfies(refVersion, version)) {
 | 
				
			||||||
      versionMap.set(
 | 
					      versionMap.set(
 | 
				
			||||||
@ -231,7 +250,7 @@ function getDownloadInfo(
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  if (curUrl == '') {
 | 
					  if (curUrl == '') {
 | 
				
			||||||
    throw new Error(
 | 
					    throw new Error(
 | 
				
			||||||
      `No valid download found for version ${version}. Check https://static.azul.com/zulu/bin/ for a list of valid versions or download your own jdk file and add the jdkFile argument`
 | 
					      `No valid download found for version ${version} and package ${javaPackage}. Check https://static.azul.com/zulu/bin/ for a list of valid versions or download your own jdk file and add the jdkFile argument`
 | 
				
			||||||
    );
 | 
					    );
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -9,9 +9,10 @@ async function run() {
 | 
				
			|||||||
      version = core.getInput('java-version', {required: true});
 | 
					      version = core.getInput('java-version', {required: true});
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    const arch = core.getInput('architecture', {required: true});
 | 
					    const arch = core.getInput('architecture', {required: true});
 | 
				
			||||||
 | 
					    const javaPackage = core.getInput('java-package', {required: true});
 | 
				
			||||||
    const jdkFile = core.getInput('jdkFile', {required: false}) || '';
 | 
					    const jdkFile = core.getInput('jdkFile', {required: false}) || '';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    await installer.getJava(version, arch, jdkFile);
 | 
					    await installer.getJava(version, arch, jdkFile, javaPackage);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    const matchersPath = path.join(__dirname, '..', '.github');
 | 
					    const matchersPath = path.join(__dirname, '..', '.github');
 | 
				
			||||||
    console.log(`##[add-matcher]${path.join(matchersPath, 'java.json')}`);
 | 
					    console.log(`##[add-matcher]${path.join(matchersPath, 'java.json')}`);
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user