fix sbt/scala cache key (#478)
This commit is contained in:
parent
191ba8c6ba
commit
404e5db3a1
|
@ -116,7 +116,7 @@ Currently, the following distributions are supported:
|
||||||
The action has a built-in functionality for caching and restoring dependencies. It uses [actions/cache](https://github.com/actions/cache) under hood for caching dependencies but requires less configuration settings. Supported package managers are gradle, maven and sbt. The format of the used cache key is `setup-java-${{ platform }}-${{ packageManager }}-${{ fileHash }}`, where the hash is based on the following files:
|
The action has a built-in functionality for caching and restoring dependencies. It uses [actions/cache](https://github.com/actions/cache) under hood for caching dependencies but requires less configuration settings. Supported package managers are gradle, maven and sbt. The format of the used cache key is `setup-java-${{ platform }}-${{ packageManager }}-${{ fileHash }}`, where the hash is based on the following files:
|
||||||
- gradle: `**/*.gradle*`, `**/gradle-wrapper.properties`, `buildSrc/**/Versions.kt`, `buildSrc/**/Dependencies.kt`, and `gradle/*.versions.toml`
|
- gradle: `**/*.gradle*`, `**/gradle-wrapper.properties`, `buildSrc/**/Versions.kt`, `buildSrc/**/Dependencies.kt`, and `gradle/*.versions.toml`
|
||||||
- maven: `**/pom.xml`
|
- maven: `**/pom.xml`
|
||||||
- sbt: all sbt build definition files `**/*.sbt`, `**/project/build.properties`, `**/project/**.{scala,sbt}`
|
- sbt: all sbt build definition files `**/*.sbt`, `**/project/build.properties`, `**/project/**.scala`, `**/project/**.sbt`
|
||||||
|
|
||||||
The workflow output `cache-hit` is set to indicate if an exact match was found for the key [as actions/cache does](https://github.com/actions/cache/tree/main#outputs).
|
The workflow output `cache-hit` is set to indicate if an exact match was found for the key [as actions/cache does](https://github.com/actions/cache/tree/main#outputs).
|
||||||
|
|
||||||
|
|
|
@ -145,7 +145,7 @@ describe('dependency cache', () => {
|
||||||
await expect(restore('sbt')).rejects.toThrow(
|
await expect(restore('sbt')).rejects.toThrow(
|
||||||
`No file in ${projectRoot(
|
`No file in ${projectRoot(
|
||||||
workspace
|
workspace
|
||||||
)} matched to [**/*.sbt,**/project/build.properties,**/project/**.{scala,sbt}], make sure you have checked out the target repository`
|
)} matched to [**/*.sbt,**/project/build.properties,**/project/**.scala,**/project/**.sbt], make sure you have checked out the target repository`
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
it('downloads cache', async () => {
|
it('downloads cache', async () => {
|
||||||
|
@ -156,6 +156,28 @@ describe('dependency cache', () => {
|
||||||
expect(spyWarning).not.toHaveBeenCalled();
|
expect(spyWarning).not.toHaveBeenCalled();
|
||||||
expect(spyInfo).toHaveBeenCalledWith('sbt cache is not found');
|
expect(spyInfo).toHaveBeenCalledWith('sbt cache is not found');
|
||||||
});
|
});
|
||||||
|
it('detects scala and sbt changes under **/project/ folder', async () => {
|
||||||
|
createFile(join(workspace, 'build.sbt'));
|
||||||
|
createDirectory(join(workspace, 'project'));
|
||||||
|
createFile(join(workspace, 'project/DependenciesV1.scala'));
|
||||||
|
|
||||||
|
await restore('sbt');
|
||||||
|
const firstCall = spySaveState.mock.calls.toString();
|
||||||
|
|
||||||
|
spySaveState.mockClear();
|
||||||
|
await restore('sbt');
|
||||||
|
const secondCall = spySaveState.mock.calls.toString();
|
||||||
|
|
||||||
|
// Make sure multiple restores produce the same cache
|
||||||
|
expect(firstCall).toBe(secondCall);
|
||||||
|
|
||||||
|
spySaveState.mockClear();
|
||||||
|
createFile(join(workspace, 'project/DependenciesV2.scala'));
|
||||||
|
await restore('sbt');
|
||||||
|
const thirdCall = spySaveState.mock.calls.toString();
|
||||||
|
|
||||||
|
expect(firstCall).not.toBe(thirdCall);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
describe('save', () => {
|
describe('save', () => {
|
||||||
|
|
|
@ -68416,7 +68416,8 @@ const supportedPackageManager = [
|
||||||
pattern: [
|
pattern: [
|
||||||
'**/*.sbt',
|
'**/*.sbt',
|
||||||
'**/project/build.properties',
|
'**/project/build.properties',
|
||||||
'**/project/**.{scala,sbt}'
|
'**/project/**.scala',
|
||||||
|
'**/project/**.sbt'
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
|
@ -103621,7 +103621,8 @@ const supportedPackageManager = [
|
||||||
pattern: [
|
pattern: [
|
||||||
'**/*.sbt',
|
'**/*.sbt',
|
||||||
'**/project/build.properties',
|
'**/project/build.properties',
|
||||||
'**/project/**.{scala,sbt}'
|
'**/project/**.scala',
|
||||||
|
'**/project/**.sbt'
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
|
@ -56,7 +56,8 @@ const supportedPackageManager: PackageManager[] = [
|
||||||
pattern: [
|
pattern: [
|
||||||
'**/*.sbt',
|
'**/*.sbt',
|
||||||
'**/project/build.properties',
|
'**/project/build.properties',
|
||||||
'**/project/**.{scala,sbt}'
|
'**/project/**.scala',
|
||||||
|
'**/project/**.sbt'
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
Loading…
Reference in New Issue