mirror of
https://github.com/actions/cache.git
synced 2026-07-03 02:52:03 +00:00
Compare commits
6 Commits
82e22760ec
...
60786370e9
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
60786370e9 | ||
|
|
0c45773b62 | ||
|
|
8a55f839aa | ||
|
|
3884cace14 | ||
|
|
e29dad3e36 | ||
|
|
42e6e83ca6 |
@ -1,5 +1,9 @@
|
|||||||
# Releases
|
# Releases
|
||||||
|
|
||||||
|
### 4.0.2
|
||||||
|
|
||||||
|
- Fixed restore `fail-on-cache-miss` not working.
|
||||||
|
|
||||||
### 4.0.1
|
### 4.0.1
|
||||||
|
|
||||||
- Updated `isGhes` check
|
- Updated `isGhes` check
|
||||||
|
|||||||
@ -449,3 +449,19 @@ test("restore with lookup-only set", async () => {
|
|||||||
);
|
);
|
||||||
expect(failedMock).toHaveBeenCalledTimes(0);
|
expect(failedMock).toHaveBeenCalledTimes(0);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test("restore failure with earlyExit should call process exit", async () => {
|
||||||
|
testUtils.setInput(Inputs.Path, "node_modules");
|
||||||
|
const failedMock = jest.spyOn(core, "setFailed");
|
||||||
|
const restoreCacheMock = jest.spyOn(cache, "restoreCache");
|
||||||
|
const processExitMock = jest.spyOn(process, "exit").mockImplementation();
|
||||||
|
|
||||||
|
// call restoreImpl with `earlyExit` set to true
|
||||||
|
await restoreImpl(new StateProvider(), true);
|
||||||
|
|
||||||
|
expect(restoreCacheMock).toHaveBeenCalledTimes(0);
|
||||||
|
expect(failedMock).toHaveBeenCalledWith(
|
||||||
|
"Input required and not supplied: key"
|
||||||
|
);
|
||||||
|
expect(processExitMock).toHaveBeenCalledWith(1);
|
||||||
|
});
|
||||||
|
|||||||
15
dist/restore-only/index.js
vendored
15
dist/restore-only/index.js
vendored
@ -59392,7 +59392,7 @@ const core = __importStar(__nccwpck_require__(2186));
|
|||||||
const constants_1 = __nccwpck_require__(9042);
|
const constants_1 = __nccwpck_require__(9042);
|
||||||
const stateProvider_1 = __nccwpck_require__(1527);
|
const stateProvider_1 = __nccwpck_require__(1527);
|
||||||
const utils = __importStar(__nccwpck_require__(6850));
|
const utils = __importStar(__nccwpck_require__(6850));
|
||||||
function restoreImpl(stateProvider) {
|
function restoreImpl(stateProvider, earlyExit) {
|
||||||
return __awaiter(this, void 0, void 0, function* () {
|
return __awaiter(this, void 0, void 0, function* () {
|
||||||
try {
|
try {
|
||||||
if (!utils.isCacheFeatureAvailable()) {
|
if (!utils.isCacheFeatureAvailable()) {
|
||||||
@ -59438,21 +59438,16 @@ function restoreImpl(stateProvider) {
|
|||||||
}
|
}
|
||||||
catch (error) {
|
catch (error) {
|
||||||
core.setFailed(error.message);
|
core.setFailed(error.message);
|
||||||
|
if (earlyExit) {
|
||||||
|
process.exit(1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
exports.restoreImpl = restoreImpl;
|
exports.restoreImpl = restoreImpl;
|
||||||
function run(stateProvider, earlyExit) {
|
function run(stateProvider, earlyExit) {
|
||||||
return __awaiter(this, void 0, void 0, function* () {
|
return __awaiter(this, void 0, void 0, function* () {
|
||||||
try {
|
yield restoreImpl(stateProvider, earlyExit);
|
||||||
yield restoreImpl(stateProvider);
|
|
||||||
}
|
|
||||||
catch (err) {
|
|
||||||
console.error(err);
|
|
||||||
if (earlyExit) {
|
|
||||||
process.exit(1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// node will stay alive if any promises are not resolved,
|
// node will stay alive if any promises are not resolved,
|
||||||
// which is a possibility if HTTP requests are dangling
|
// which is a possibility if HTTP requests are dangling
|
||||||
// due to retries or timeouts. We know that if we got here
|
// due to retries or timeouts. We know that if we got here
|
||||||
|
|||||||
15
dist/restore/index.js
vendored
15
dist/restore/index.js
vendored
@ -59392,7 +59392,7 @@ const core = __importStar(__nccwpck_require__(2186));
|
|||||||
const constants_1 = __nccwpck_require__(9042);
|
const constants_1 = __nccwpck_require__(9042);
|
||||||
const stateProvider_1 = __nccwpck_require__(1527);
|
const stateProvider_1 = __nccwpck_require__(1527);
|
||||||
const utils = __importStar(__nccwpck_require__(6850));
|
const utils = __importStar(__nccwpck_require__(6850));
|
||||||
function restoreImpl(stateProvider) {
|
function restoreImpl(stateProvider, earlyExit) {
|
||||||
return __awaiter(this, void 0, void 0, function* () {
|
return __awaiter(this, void 0, void 0, function* () {
|
||||||
try {
|
try {
|
||||||
if (!utils.isCacheFeatureAvailable()) {
|
if (!utils.isCacheFeatureAvailable()) {
|
||||||
@ -59438,21 +59438,16 @@ function restoreImpl(stateProvider) {
|
|||||||
}
|
}
|
||||||
catch (error) {
|
catch (error) {
|
||||||
core.setFailed(error.message);
|
core.setFailed(error.message);
|
||||||
|
if (earlyExit) {
|
||||||
|
process.exit(1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
exports.restoreImpl = restoreImpl;
|
exports.restoreImpl = restoreImpl;
|
||||||
function run(stateProvider, earlyExit) {
|
function run(stateProvider, earlyExit) {
|
||||||
return __awaiter(this, void 0, void 0, function* () {
|
return __awaiter(this, void 0, void 0, function* () {
|
||||||
try {
|
yield restoreImpl(stateProvider, earlyExit);
|
||||||
yield restoreImpl(stateProvider);
|
|
||||||
}
|
|
||||||
catch (err) {
|
|
||||||
console.error(err);
|
|
||||||
if (earlyExit) {
|
|
||||||
process.exit(1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// node will stay alive if any promises are not resolved,
|
// node will stay alive if any promises are not resolved,
|
||||||
// which is a possibility if HTTP requests are dangling
|
// which is a possibility if HTTP requests are dangling
|
||||||
// due to retries or timeouts. We know that if we got here
|
// due to retries or timeouts. We know that if we got here
|
||||||
|
|||||||
32
examples.md
32
examples.md
@ -40,6 +40,9 @@
|
|||||||
- [Swift - Swift Package Manager](#swift---swift-package-manager)
|
- [Swift - Swift Package Manager](#swift---swift-package-manager)
|
||||||
- [Swift - Mint](#swift---mint)
|
- [Swift - Mint](#swift---mint)
|
||||||
- [* - Bazel](#---bazel)
|
- [* - Bazel](#---bazel)
|
||||||
|
- [Common use cases](#common-use-cases)
|
||||||
|
- [Restore-only caches](#restore-only-caches)
|
||||||
|
- [Automatically detect cached paths](#automatically-detect-cached-paths)
|
||||||
|
|
||||||
## C# - NuGet
|
## C# - NuGet
|
||||||
|
|
||||||
@ -690,3 +693,32 @@ steps:
|
|||||||
${{ runner.os }}-bazel-
|
${{ runner.os }}-bazel-
|
||||||
- run: bazelisk test //...
|
- run: bazelisk test //...
|
||||||
```
|
```
|
||||||
|
## Common use cases
|
||||||
|
|
||||||
|
### Restore-only caches
|
||||||
|
If there are several builds on the same repo it might make sense to create a cache in one build and use it in the
|
||||||
|
others. The action [actions/cache/restore](https://github.com/actions/cache/blob/main/restore/README.md#only-restore-cache)
|
||||||
|
should be used in this case.
|
||||||
|
|
||||||
|
### Automatically detect cached paths
|
||||||
|
[Defining outputs for jobs](https://docs.github.com/en/actions/using-jobs/defining-outputs-for-jobs) can be used to
|
||||||
|
automatically detect paths to cache and use them to configure `actions/cache` action.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
- name: Get Go cached paths
|
||||||
|
id: find-cached-paths
|
||||||
|
run: |
|
||||||
|
echo "cache=$(go env GOCACHE)" >> $GITHUB_ENV
|
||||||
|
echo "modcache=$(go env GOMODCACHE)" >> $GITHUB_ENV
|
||||||
|
|
||||||
|
- name: Set up cache
|
||||||
|
uses: actions/cache@v3
|
||||||
|
needs: find-cached-paths
|
||||||
|
with:
|
||||||
|
path: |
|
||||||
|
${{ env.cache }}
|
||||||
|
${{ env.modcache }}
|
||||||
|
key: setup-go-${{ runner.os }}-go-${{ hashFiles('go.sum go.mod') }}
|
||||||
|
restore-keys: |
|
||||||
|
setup-go-${{ runner.os }}-go-
|
||||||
|
```
|
||||||
4
package-lock.json
generated
4
package-lock.json
generated
@ -1,12 +1,12 @@
|
|||||||
{
|
{
|
||||||
"name": "cache",
|
"name": "cache",
|
||||||
"version": "4.0.1",
|
"version": "4.0.2",
|
||||||
"lockfileVersion": 2,
|
"lockfileVersion": 2,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "cache",
|
"name": "cache",
|
||||||
"version": "4.0.1",
|
"version": "4.0.2",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@actions/cache": "^3.2.3",
|
"@actions/cache": "^3.2.3",
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "cache",
|
"name": "cache",
|
||||||
"version": "4.0.1",
|
"version": "4.0.2",
|
||||||
"private": true,
|
"private": true,
|
||||||
"description": "Cache dependencies and build outputs",
|
"description": "Cache dependencies and build outputs",
|
||||||
"main": "dist/restore/index.js",
|
"main": "dist/restore/index.js",
|
||||||
|
|||||||
@ -10,7 +10,8 @@ import {
|
|||||||
import * as utils from "./utils/actionUtils";
|
import * as utils from "./utils/actionUtils";
|
||||||
|
|
||||||
export async function restoreImpl(
|
export async function restoreImpl(
|
||||||
stateProvider: IStateProvider
|
stateProvider: IStateProvider,
|
||||||
|
earlyExit?: boolean | undefined
|
||||||
): Promise<string | undefined> {
|
): Promise<string | undefined> {
|
||||||
try {
|
try {
|
||||||
if (!utils.isCacheFeatureAvailable()) {
|
if (!utils.isCacheFeatureAvailable()) {
|
||||||
@ -83,6 +84,9 @@ export async function restoreImpl(
|
|||||||
return cacheKey;
|
return cacheKey;
|
||||||
} catch (error: unknown) {
|
} catch (error: unknown) {
|
||||||
core.setFailed((error as Error).message);
|
core.setFailed((error as Error).message);
|
||||||
|
if (earlyExit) {
|
||||||
|
process.exit(1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -90,14 +94,7 @@ async function run(
|
|||||||
stateProvider: IStateProvider,
|
stateProvider: IStateProvider,
|
||||||
earlyExit: boolean | undefined
|
earlyExit: boolean | undefined
|
||||||
): Promise<void> {
|
): Promise<void> {
|
||||||
try {
|
await restoreImpl(stateProvider, earlyExit);
|
||||||
await restoreImpl(stateProvider);
|
|
||||||
} catch (err) {
|
|
||||||
console.error(err);
|
|
||||||
if (earlyExit) {
|
|
||||||
process.exit(1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// node will stay alive if any promises are not resolved,
|
// node will stay alive if any promises are not resolved,
|
||||||
// which is a possibility if HTTP requests are dangling
|
// which is a possibility if HTTP requests are dangling
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user