mirror of
https://github.com/actions/setup-java.git
synced 2026-08-11 17:52:57 +00:00
Include gradle.properties in Gradle cache key (#1225)
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Co-authored-by: Bruno Borges <brborges@microsoft.com>
This commit is contained in:
@@ -274,7 +274,7 @@ The primary dependency cache key is `setup-java-<runner-os>-<node-arch>-<package
|
|||||||
|
|
||||||
| Package manager | Files used for the primary dependency-cache key |
|
| Package manager | Files used for the primary dependency-cache key |
|
||||||
| --- | --- |
|
| --- | --- |
|
||||||
| Gradle | `**/*.gradle*`, `**/gradle-wrapper.properties`, `buildSrc/**/Versions.kt`, `buildSrc/**/Dependencies.kt`, `gradle/*.versions.toml`, `**/versions.properties` |
|
| Gradle | `**/*.gradle*`, `**/gradle.properties`, `**/gradle-wrapper.properties`, `buildSrc/**/Versions.kt`, `buildSrc/**/Dependencies.kt`, `gradle/*.versions.toml`, `**/versions.properties` |
|
||||||
| Maven | `**/pom.xml`, `**/.mvn/wrapper/maven-wrapper.properties`, `**/.mvn/extensions.xml` |
|
| Maven | `**/pom.xml`, `**/.mvn/wrapper/maven-wrapper.properties`, `**/.mvn/extensions.xml` |
|
||||||
| sbt | `**/*.sbt`, `**/project/build.properties`, `**/project/**.scala`, `**/project/**.sbt` |
|
| sbt | `**/*.sbt`, `**/project/build.properties`, `**/project/**.scala`, `**/project/**.sbt` |
|
||||||
|
|
||||||
|
|||||||
+37
-8
@@ -11,6 +11,7 @@ import {
|
|||||||
import {mkdtempSync} from 'fs';
|
import {mkdtempSync} from 'fs';
|
||||||
import {tmpdir} from 'os';
|
import {tmpdir} from 'os';
|
||||||
import {join} from 'path';
|
import {join} from 'path';
|
||||||
|
import {createHash} from 'crypto';
|
||||||
import * as fs from 'fs';
|
import * as fs from 'fs';
|
||||||
import * as os from 'os';
|
import * as os from 'os';
|
||||||
|
|
||||||
@@ -342,7 +343,7 @@ describe('dependency cache', () => {
|
|||||||
await expect(restore('gradle', '')).rejects.toThrow(
|
await expect(restore('gradle', '')).rejects.toThrow(
|
||||||
`No file in ${projectRoot(
|
`No file in ${projectRoot(
|
||||||
workspace
|
workspace
|
||||||
)} matched to [**/*.gradle*,**/gradle-wrapper.properties,buildSrc/**/Versions.kt,buildSrc/**/Dependencies.kt,gradle/*.versions.toml,**/versions.properties], make sure you have checked out the target repository`
|
)} matched to [**/*.gradle*,**/gradle.properties,**/gradle-wrapper.properties,buildSrc/**/Versions.kt,buildSrc/**/Dependencies.kt,gradle/*.versions.toml,**/versions.properties], make sure you have checked out the target repository`
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
it('downloads cache based on build.gradle', async () => {
|
it('downloads cache based on build.gradle', async () => {
|
||||||
@@ -351,7 +352,7 @@ describe('dependency cache', () => {
|
|||||||
await restore('gradle', '');
|
await restore('gradle', '');
|
||||||
expect(spyCacheRestore).toHaveBeenCalled();
|
expect(spyCacheRestore).toHaveBeenCalled();
|
||||||
expect(spyGlobHashFiles).toHaveBeenCalledWith(
|
expect(spyGlobHashFiles).toHaveBeenCalledWith(
|
||||||
'**/*.gradle*\n**/gradle-wrapper.properties\nbuildSrc/**/Versions.kt\nbuildSrc/**/Dependencies.kt\ngradle/*.versions.toml\n**/versions.properties'
|
'**/*.gradle*\n**/gradle.properties\n**/gradle-wrapper.properties\nbuildSrc/**/Versions.kt\nbuildSrc/**/Dependencies.kt\ngradle/*.versions.toml\n**/versions.properties'
|
||||||
);
|
);
|
||||||
expect(spyWarning).not.toHaveBeenCalled();
|
expect(spyWarning).not.toHaveBeenCalled();
|
||||||
expect(spyInfo).toHaveBeenCalledWith('gradle cache is not found');
|
expect(spyInfo).toHaveBeenCalledWith('gradle cache is not found');
|
||||||
@@ -362,7 +363,7 @@ describe('dependency cache', () => {
|
|||||||
await restore('gradle', '');
|
await restore('gradle', '');
|
||||||
expect(spyCacheRestore).toHaveBeenCalled();
|
expect(spyCacheRestore).toHaveBeenCalled();
|
||||||
expect(spyGlobHashFiles).toHaveBeenCalledWith(
|
expect(spyGlobHashFiles).toHaveBeenCalledWith(
|
||||||
'**/*.gradle*\n**/gradle-wrapper.properties\nbuildSrc/**/Versions.kt\nbuildSrc/**/Dependencies.kt\ngradle/*.versions.toml\n**/versions.properties'
|
'**/*.gradle*\n**/gradle.properties\n**/gradle-wrapper.properties\nbuildSrc/**/Versions.kt\nbuildSrc/**/Dependencies.kt\ngradle/*.versions.toml\n**/versions.properties'
|
||||||
);
|
);
|
||||||
expect(spyWarning).not.toHaveBeenCalled();
|
expect(spyWarning).not.toHaveBeenCalled();
|
||||||
expect(spyInfo).toHaveBeenCalledWith('gradle cache is not found');
|
expect(spyInfo).toHaveBeenCalledWith('gradle cache is not found');
|
||||||
@@ -374,7 +375,7 @@ describe('dependency cache', () => {
|
|||||||
await restore('gradle', '');
|
await restore('gradle', '');
|
||||||
expect(spyCacheRestore).toHaveBeenCalled();
|
expect(spyCacheRestore).toHaveBeenCalled();
|
||||||
expect(spyGlobHashFiles).toHaveBeenCalledWith(
|
expect(spyGlobHashFiles).toHaveBeenCalledWith(
|
||||||
'**/*.gradle*\n**/gradle-wrapper.properties\nbuildSrc/**/Versions.kt\nbuildSrc/**/Dependencies.kt\ngradle/*.versions.toml\n**/versions.properties'
|
'**/*.gradle*\n**/gradle.properties\n**/gradle-wrapper.properties\nbuildSrc/**/Versions.kt\nbuildSrc/**/Dependencies.kt\ngradle/*.versions.toml\n**/versions.properties'
|
||||||
);
|
);
|
||||||
expect(spyWarning).not.toHaveBeenCalled();
|
expect(spyWarning).not.toHaveBeenCalled();
|
||||||
expect(spyInfo).toHaveBeenCalledWith('gradle cache is not found');
|
expect(spyInfo).toHaveBeenCalledWith('gradle cache is not found');
|
||||||
@@ -386,11 +387,39 @@ describe('dependency cache', () => {
|
|||||||
await restore('gradle', '');
|
await restore('gradle', '');
|
||||||
expect(spyCacheRestore).toHaveBeenCalled();
|
expect(spyCacheRestore).toHaveBeenCalled();
|
||||||
expect(spyGlobHashFiles).toHaveBeenCalledWith(
|
expect(spyGlobHashFiles).toHaveBeenCalledWith(
|
||||||
'**/*.gradle*\n**/gradle-wrapper.properties\nbuildSrc/**/Versions.kt\nbuildSrc/**/Dependencies.kt\ngradle/*.versions.toml\n**/versions.properties'
|
'**/*.gradle*\n**/gradle.properties\n**/gradle-wrapper.properties\nbuildSrc/**/Versions.kt\nbuildSrc/**/Dependencies.kt\ngradle/*.versions.toml\n**/versions.properties'
|
||||||
);
|
);
|
||||||
expect(spyWarning).not.toHaveBeenCalled();
|
expect(spyWarning).not.toHaveBeenCalled();
|
||||||
expect(spyInfo).toHaveBeenCalledWith('gradle cache is not found');
|
expect(spyInfo).toHaveBeenCalledWith('gradle cache is not found');
|
||||||
});
|
});
|
||||||
|
it('changes the cache key when gradle.properties changes', async () => {
|
||||||
|
const buildFile = join(workspace, 'build.gradle');
|
||||||
|
const propertiesFile = join(workspace, 'gradle.properties');
|
||||||
|
createFile(buildFile);
|
||||||
|
createFile(propertiesFile, 'dependencyVersion=1.0.0');
|
||||||
|
spyGlobHashFiles.mockImplementation(async (pattern: string) => {
|
||||||
|
if (pattern === '**/gradle-wrapper.properties') {
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
|
||||||
|
const files = [buildFile];
|
||||||
|
if (pattern.split('\n').includes('**/gradle.properties')) {
|
||||||
|
files.push(propertiesFile);
|
||||||
|
}
|
||||||
|
const hash = createHash('sha256');
|
||||||
|
files.forEach(file => hash.update(fs.readFileSync(file)));
|
||||||
|
return hash.digest('hex');
|
||||||
|
});
|
||||||
|
|
||||||
|
await restore('gradle', '');
|
||||||
|
const firstKey = spyCacheRestore.mock.calls[0][1];
|
||||||
|
|
||||||
|
fs.writeFileSync(propertiesFile, 'dependencyVersion=2.0.0');
|
||||||
|
await restore('gradle', '');
|
||||||
|
const secondKey = spyCacheRestore.mock.calls[1][1];
|
||||||
|
|
||||||
|
expect(secondKey).not.toBe(firstKey);
|
||||||
|
});
|
||||||
it('restores the gradle wrapper distribution cache independently of the main cache', async () => {
|
it('restores the gradle wrapper distribution cache independently of the main cache', async () => {
|
||||||
createFile(join(workspace, 'build.gradle'));
|
createFile(join(workspace, 'build.gradle'));
|
||||||
|
|
||||||
@@ -529,7 +558,7 @@ describe('dependency cache', () => {
|
|||||||
await restore('gradle', '');
|
await restore('gradle', '');
|
||||||
expect(spyCacheRestore).toHaveBeenCalled();
|
expect(spyCacheRestore).toHaveBeenCalled();
|
||||||
expect(spyGlobHashFiles).toHaveBeenCalledWith(
|
expect(spyGlobHashFiles).toHaveBeenCalledWith(
|
||||||
'**/*.gradle*\n**/gradle-wrapper.properties\nbuildSrc/**/Versions.kt\nbuildSrc/**/Dependencies.kt\ngradle/*.versions.toml\n**/versions.properties'
|
'**/*.gradle*\n**/gradle.properties\n**/gradle-wrapper.properties\nbuildSrc/**/Versions.kt\nbuildSrc/**/Dependencies.kt\ngradle/*.versions.toml\n**/versions.properties'
|
||||||
);
|
);
|
||||||
expect(spyWarning).not.toHaveBeenCalled();
|
expect(spyWarning).not.toHaveBeenCalled();
|
||||||
expect(spyInfo).toHaveBeenCalledWith('gradle cache is not found');
|
expect(spyInfo).toHaveBeenCalledWith('gradle cache is not found');
|
||||||
@@ -1027,9 +1056,9 @@ function createStateForSuccessfulRestore() {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function createFile(path: string) {
|
function createFile(path: string, contents = '') {
|
||||||
core.info(`created a file at ${path}`);
|
core.info(`created a file at ${path}`);
|
||||||
fs.writeFileSync(path, '');
|
fs.writeFileSync(path, contents);
|
||||||
}
|
}
|
||||||
|
|
||||||
function deferred<T>() {
|
function deferred<T>() {
|
||||||
|
|||||||
Vendored
+1
@@ -56,6 +56,7 @@ const supportedPackageManager = [
|
|||||||
// https://github.com/actions/cache/blob/0638051e9af2c23d10bb70fa9beffcad6cff9ce3/examples.md#java---gradle
|
// https://github.com/actions/cache/blob/0638051e9af2c23d10bb70fa9beffcad6cff9ce3/examples.md#java---gradle
|
||||||
pattern: [
|
pattern: [
|
||||||
'**/*.gradle*',
|
'**/*.gradle*',
|
||||||
|
'**/gradle.properties',
|
||||||
'**/gradle-wrapper.properties',
|
'**/gradle-wrapper.properties',
|
||||||
'buildSrc/**/Versions.kt',
|
'buildSrc/**/Versions.kt',
|
||||||
'buildSrc/**/Dependencies.kt',
|
'buildSrc/**/Dependencies.kt',
|
||||||
|
|||||||
Vendored
+1
@@ -56,6 +56,7 @@ const supportedPackageManager = [
|
|||||||
// https://github.com/actions/cache/blob/0638051e9af2c23d10bb70fa9beffcad6cff9ce3/examples.md#java---gradle
|
// https://github.com/actions/cache/blob/0638051e9af2c23d10bb70fa9beffcad6cff9ce3/examples.md#java---gradle
|
||||||
pattern: [
|
pattern: [
|
||||||
'**/*.gradle*',
|
'**/*.gradle*',
|
||||||
|
'**/gradle.properties',
|
||||||
'**/gradle-wrapper.properties',
|
'**/gradle-wrapper.properties',
|
||||||
'buildSrc/**/Versions.kt',
|
'buildSrc/**/Versions.kt',
|
||||||
'buildSrc/**/Dependencies.kt',
|
'buildSrc/**/Dependencies.kt',
|
||||||
|
|||||||
@@ -82,6 +82,7 @@ const supportedPackageManager: PackageManager[] = [
|
|||||||
// https://github.com/actions/cache/blob/0638051e9af2c23d10bb70fa9beffcad6cff9ce3/examples.md#java---gradle
|
// https://github.com/actions/cache/blob/0638051e9af2c23d10bb70fa9beffcad6cff9ce3/examples.md#java---gradle
|
||||||
pattern: [
|
pattern: [
|
||||||
'**/*.gradle*',
|
'**/*.gradle*',
|
||||||
|
'**/gradle.properties',
|
||||||
'**/gradle-wrapper.properties',
|
'**/gradle-wrapper.properties',
|
||||||
'buildSrc/**/Versions.kt',
|
'buildSrc/**/Versions.kt',
|
||||||
'buildSrc/**/Dependencies.kt',
|
'buildSrc/**/Dependencies.kt',
|
||||||
|
|||||||
Reference in New Issue
Block a user