Permalink
Cannot retrieve contributors at this time
64 lines (54 sloc)
2.13 KB
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
github-actions-cache/src/save.ts
Go to fileThis commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import * as cache from "@actions/cache"; | |
import * as core from "@actions/core"; | |
import { Events, Inputs, State } from "./constants"; | |
import * as utils from "./utils/actionUtils"; | |
// Catch and log any unhandled exceptions. These exceptions can leak out of the uploadChunk method in | |
// @actions/toolkit when a failed upload closes the file descriptor causing any in-process reads to | |
// throw an uncaught exception. Instead of failing this action, just warn. | |
process.on("uncaughtException", e => utils.logWarning(e.message)); | |
async function run(): Promise<void> { | |
try { | |
if (!utils.isValidEvent()) { | |
utils.logWarning( | |
`Event Validation Error: The event type ${ | |
process.env[Events.Key] | |
} is not supported because it's not tied to a branch or tag ref.` | |
); | |
return; | |
} | |
const state = utils.getCacheState(); | |
// Inputs are re-evaluted before the post action, so we want the original key used for restore | |
const primaryKey = core.getState(State.CachePrimaryKey); | |
if (!primaryKey) { | |
utils.logWarning(`Error retrieving key from state.`); | |
return; | |
} | |
if (utils.isExactKeyMatch(primaryKey, state)) { | |
core.info( | |
`Cache hit occurred on the primary key ${primaryKey}, not saving cache.` | |
); | |
return; | |
} | |
const cachePaths = utils.getInputAsArray(Inputs.Path, { | |
required: true | |
}); | |
try { | |
await cache.saveCache(cachePaths, primaryKey, { | |
uploadChunkSize: utils.getInputAsInt(Inputs.UploadChunkSize) | |
}); | |
core.info(`Cache saved with key: ${primaryKey}`); | |
} catch (error) { | |
if (error.name === cache.ValidationError.name) { | |
throw error; | |
} else if (error.name === cache.ReserveCacheError.name) { | |
core.info(error.message); | |
} else { | |
utils.logWarning(error.message); | |
} | |
} | |
} catch (error) { | |
utils.logWarning(error.message); | |
} | |
} | |
run(); | |
export default run; |