mirror of
https://gitea.com/actions/setup-java.git
synced 2026-08-05 02:31:18 +00:00
Fix JDK cache CI validation
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
@@ -168,6 +168,8 @@ steps:
|
||||
| `mvn-toolchain-vendor` | Maven Toolchain vendor value. | `${distribution}` |
|
||||
| `show-download-progress` | Keep Maven artifact download and transfer progress in logs. When `false`, the action adds `-ntp` to `MAVEN_ARGS`. | `false` |
|
||||
|
||||
- `java-package`: Supported package types are `jdk`, `jre`, `jdk+fx`, `jre+fx`, `jdk+crac`, `jre+crac`, `jdk+jmods`, `jdk+jcef`, `jre+jcef`, `jdk+ft`, and `jre+ft`. Availability varies by distribution.
|
||||
|
||||
Deprecated aliases `jdkFile`, `server-username`, `server-password`, and `gpg-passphrase` remain accepted for compatibility, but should be replaced with the current input names.
|
||||
|
||||
## Outputs
|
||||
|
||||
@@ -493,6 +493,11 @@ describe('setupJava', () => {
|
||||
});
|
||||
|
||||
it('restores the exact resolved JDK before downloading', async () => {
|
||||
const toolCachePath = path.join('toolcache');
|
||||
jest.replaceProperty(process, 'env', {
|
||||
...process.env,
|
||||
RUNNER_TOOL_CACHE: toolCachePath
|
||||
});
|
||||
mockJavaBase = new EmptyJavaBase({
|
||||
version: '11',
|
||||
architecture: 'x86',
|
||||
@@ -517,7 +522,7 @@ describe('setupJava', () => {
|
||||
architecture: 'x86',
|
||||
version: actualJavaVersion,
|
||||
source: `some/random_url/java/${actualJavaVersion}`,
|
||||
path: path.join('Java_Empty_jdk', actualJavaVersion)
|
||||
path: path.join(toolCachePath, 'Java_Empty_jdk', actualJavaVersion)
|
||||
});
|
||||
expect(downloadTool).not.toHaveBeenCalled();
|
||||
expect(spyCoreInfo).not.toHaveBeenCalledWith('Trying to download...');
|
||||
|
||||
Vendored
+5
-3
@@ -113,18 +113,20 @@ async function saveJdkCaches() {
|
||||
}
|
||||
}
|
||||
function buildJdkCacheKey(jdk) {
|
||||
const runnerOs = process.env['RUNNER_OS'] ?? process.platform;
|
||||
const normalizedArchitecture = jdk.architecture.toLowerCase();
|
||||
const identity = JSON.stringify({
|
||||
keyVersion: JDK_CACHE_KEY_VERSION,
|
||||
runnerOs: process.env['RUNNER_OS'] ?? process.platform,
|
||||
runnerOs,
|
||||
platform: process.platform,
|
||||
distribution: jdk.distribution.toLowerCase(),
|
||||
packageType: jdk.packageType.toLowerCase(),
|
||||
architecture: jdk.architecture.toLowerCase(),
|
||||
architecture: normalizedArchitecture,
|
||||
version: jdk.version,
|
||||
source: jdk.source
|
||||
});
|
||||
const digest = createHash('sha256').update(identity).digest('hex');
|
||||
return `setup-java-jdk-v${JDK_CACHE_KEY_VERSION}-${process.env['RUNNER_OS'] ?? process.platform}-${jdk.architecture}-${digest}`;
|
||||
return `setup-java-jdk-v${JDK_CACHE_KEY_VERSION}-${runnerOs}-${normalizedArchitecture}-${digest}`;
|
||||
}
|
||||
function parseJdkCacheState(state) {
|
||||
const value = JSON.parse(state);
|
||||
|
||||
Vendored
+10
-2
@@ -460,10 +460,18 @@ class JavaBase {
|
||||
return version.replace('+', '-');
|
||||
}
|
||||
getJdkCachePath(version) {
|
||||
return external_path_default().join(process.env['RUNNER_TOOL_CACHE'] ?? '', this.toolcacheFolderName, this.getToolcacheVersionName(version));
|
||||
const toolCache = process.env['RUNNER_TOOL_CACHE'];
|
||||
if (!toolCache) {
|
||||
return '';
|
||||
}
|
||||
return external_path_default().join(toolCache, this.toolcacheFolderName, this.getToolcacheVersionName(version));
|
||||
}
|
||||
getRestoredJdkPath(version) {
|
||||
const architecturePath = external_path_default().join(this.getJdkCachePath(version), this.architecture);
|
||||
const basePath = this.getJdkCachePath(version);
|
||||
if (!basePath) {
|
||||
return null;
|
||||
}
|
||||
const architecturePath = external_path_default().join(basePath, this.architecture);
|
||||
return external_fs_.existsSync(architecturePath) &&
|
||||
external_fs_.existsSync(`${architecturePath}.complete`)
|
||||
? architecturePath
|
||||
|
||||
Vendored
+5
-3
@@ -117,18 +117,20 @@ async function saveJdkCaches() {
|
||||
}
|
||||
}
|
||||
function buildJdkCacheKey(jdk) {
|
||||
const runnerOs = process.env['RUNNER_OS'] ?? process.platform;
|
||||
const normalizedArchitecture = jdk.architecture.toLowerCase();
|
||||
const identity = JSON.stringify({
|
||||
keyVersion: JDK_CACHE_KEY_VERSION,
|
||||
runnerOs: process.env['RUNNER_OS'] ?? process.platform,
|
||||
runnerOs,
|
||||
platform: process.platform,
|
||||
distribution: jdk.distribution.toLowerCase(),
|
||||
packageType: jdk.packageType.toLowerCase(),
|
||||
architecture: jdk.architecture.toLowerCase(),
|
||||
architecture: normalizedArchitecture,
|
||||
version: jdk.version,
|
||||
source: jdk.source
|
||||
});
|
||||
const digest = (0,crypto__WEBPACK_IMPORTED_MODULE_0__.createHash)('sha256').update(identity).digest('hex');
|
||||
return `setup-java-jdk-v${JDK_CACHE_KEY_VERSION}-${process.env['RUNNER_OS'] ?? process.platform}-${jdk.architecture}-${digest}`;
|
||||
return `setup-java-jdk-v${JDK_CACHE_KEY_VERSION}-${runnerOs}-${normalizedArchitecture}-${digest}`;
|
||||
}
|
||||
function parseJdkCacheState(state) {
|
||||
const value = JSON.parse(state);
|
||||
|
||||
Reference in New Issue
Block a user