Compare commits

...

7 Commits

Author SHA1 Message Date
rodrigoalcarazdelaosa
bf962b1afe
Merge 6094803a45 into 0c45773b62 2024-03-19 20:15:20 +01:00
Bethany
0c45773b62
Merge pull request #1327 from cdce8p/fix-fail-on-cache-miss
Fix `fail-on-cache-miss` not working
2024-03-19 09:31:49 -04:00
Marc Mueller
8a55f839aa Add test case for process exit
Co-authored-by: Bethany <bethanyj28@users.noreply.github.com>
2024-03-19 09:28:12 +01:00
Marc Mueller
3884cace14 Bump version 2024-03-01 07:28:18 +01:00
Marc Mueller
e29dad3e36 Fix fail-on-cache-miss not working 2024-03-01 07:28:18 +01:00
rodrigoalcarazdelaosa
6094803a45
Merge branch 'main' into main 2023-10-16 16:48:38 +02:00
Rodrigo Alcaraz de la Osa
ad901c8ed3 Add Hugo resources example 2023-04-23 11:41:05 +02:00
9 changed files with 50 additions and 32 deletions

View File

@ -166,6 +166,7 @@ See [Examples](examples.md) for a list of `actions/cache` implementations for us
* [Go - Modules](./examples.md#go---modules) * [Go - Modules](./examples.md#go---modules)
* [Haskell - Cabal](./examples.md#haskell---cabal) * [Haskell - Cabal](./examples.md#haskell---cabal)
* [Haskell - Stack](./examples.md#haskell---stack) * [Haskell - Stack](./examples.md#haskell---stack)
* [Hugo - Resources](./examples.md#hugo---resources)
* [Java - Gradle](./examples.md#java---gradle) * [Java - Gradle](./examples.md#java---gradle)
* [Java - Maven](./examples.md#java---maven) * [Java - Maven](./examples.md#java---maven)
* [Node - npm](./examples.md#node---npm) * [Node - npm](./examples.md#node---npm)

View File

@ -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

View File

@ -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);
});

View File

@ -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
View File

@ -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

View File

@ -17,6 +17,7 @@
- [Windows](#windows-2) - [Windows](#windows-2)
- [Haskell - Cabal](#haskell---cabal) - [Haskell - Cabal](#haskell---cabal)
- [Haskell - Stack](#haskell---stack) - [Haskell - Stack](#haskell---stack)
- [Hugo - Resources](#hugo---resources)
- [Java - Gradle](#java---gradle) - [Java - Gradle](#java---gradle)
- [Java - Maven](#java---maven) - [Java - Maven](#java---maven)
- [Node - npm](#node---npm) - [Node - npm](#node---npm)
@ -279,6 +280,15 @@ We cache the elements of the Cabal store separately, as the entirety of `~/.caba
${{ runner.os }}-stack-work- ${{ runner.os }}-stack-work-
``` ```
## Hugo - Resources
```yaml
- uses: actions/cache@v3
with:
path: resources
key: ${{ runner.os }}-hugo-resources
```
## Java - Gradle ## Java - Gradle
> **Note** Ensure no Gradle daemons are running anymore when your workflow completes. Creating the cache package might fail due to locks being held by Gradle. Refer to the [Gradle Daemon documentation](https://docs.gradle.org/current/userguide/gradle_daemon.html) on how to disable or stop the Gradle Daemons. > **Note** Ensure no Gradle daemons are running anymore when your workflow completes. Creating the cache package might fail due to locks being held by Gradle. Refer to the [Gradle Daemon documentation](https://docs.gradle.org/current/userguide/gradle_daemon.html) on how to disable or stop the Gradle Daemons.

4
package-lock.json generated
View File

@ -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",

View File

@ -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",

View File

@ -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