new: Delete cache older than 14 days.

This commit is contained in:
Miles Johnson 2023-04-18 10:52:30 -07:00
parent c30f25ce4b
commit 0716d005db
4 changed files with 21 additions and 4 deletions

View file

@ -93,6 +93,7 @@ The following optimizations and considerations are taken into account when cachi
crate, a checkout will be performed on-demand. crate, a checkout will be performed on-demand.
- The `/registry` directory is _cleaned_ before saving the cache. This includes removing `src`, - The `/registry` directory is _cleaned_ before saving the cache. This includes removing `src`,
`.cache`, and any other unnecessary files. `.cache`, and any other unnecessary files.
- Registry artifacts older than 14 days will be removed.
- `/target/debug` - `/target/debug`
- Only the `debug` profile is cached, as this profile is typically used for formatting, linting, - Only the `debug` profile is cached, as this profile is typically used for formatting, linting,
and testing. and testing.

View file

@ -1,11 +1,11 @@
{ {
"name": "@moonrepo/setup-rust", "name": "@moonrepo/setup-rust",
"version": "0.4.1", "version": "0.4.2",
"description": "A GitHub action for setting up Rust and Cargo.", "description": "A GitHub action for setting up Rust and Cargo.",
"main": "dist/index.js", "main": "dist/index.js",
"scripts": { "scripts": {
"build": "ncc build ./index.ts && ncc build ./post.ts --out ./dist/post", "build": "ncc build ./index.ts && ncc build ./post.ts --out ./dist/post",
"check": "npm run lint && npm run typecheck", "check": "pnpm run lint && pnpm run typecheck",
"lint": "eslint --ext .ts,.js --fix .", "lint": "eslint --ext .ts,.js --fix .",
"typecheck": "tsc --noEmit" "typecheck": "tsc --noEmit"
}, },

View file

@ -7,7 +7,7 @@ import * as core from '@actions/core';
import * as exec from '@actions/exec'; import * as exec from '@actions/exec';
import * as glob from '@actions/glob'; import * as glob from '@actions/glob';
import * as tc from '@actions/tool-cache'; import * as tc from '@actions/tool-cache';
import { rmrf } from './fs'; import { padDate, rmrf } from './helpers';
import { RUST_HASH, RUST_VERSION } from './rust'; import { RUST_HASH, RUST_VERSION } from './rust';
export const CARGO_HOME = process.env.CARGO_HOME ?? path.join(os.homedir(), '.cargo'); export const CARGO_HOME = process.env.CARGO_HOME ?? path.join(os.homedir(), '.cargo');
@ -129,7 +129,19 @@ export async function cleanCargoRegistry() {
const registryDir = path.join(CARGO_HOME, 'registry'); const registryDir = path.join(CARGO_HOME, 'registry');
// .cargo/registry/src - Delete entirely // .cargo/registry/src - Delete entirely
await exec.exec('cargo', ['cache', '--autoclean']); const staleDate = new Date();
// eslint-disable-next-line no-magic-numbers
staleDate.setDate(staleDate.getDate() - 14);
await exec.exec('cargo', [
'cache',
'--autoclean',
'--remove-if-older-than',
`${staleDate.getFullYear()}.${padDate(staleDate.getMonth() + 1)}.${padDate(
staleDate.getDate(),
)}`,
]);
// .cargo/registry/index - Delete .cache directories // .cargo/registry/index - Delete .cache directories
const indexDir = path.join(registryDir, 'index'); const indexDir = path.join(registryDir, 'index');

View file

@ -10,3 +10,7 @@ export async function rmrf(dir: string) {
core.warning(`Failed to delete ${dir}: ${error}`); core.warning(`Failed to delete ${dir}: ${error}`);
} }
} }
export function padDate(value: number) {
return String(value).padStart(2, '0');
}