rust-cache/README.md

58 lines
1.6 KiB
Markdown
Raw Normal View History

2020-09-25 22:42:39 +08:00
# Rust Cache Action
2020-10-04 00:10:54 +08:00
A GitHub Action that implements smart caching for rust/cargo projects with
sensible defaults.
2020-09-25 22:42:39 +08:00
## Example usage
```yaml
# selecting a toolchain either by action or manual `rustup` calls should happen
# before the plugin, as it uses the current rustc version as its cache key
- uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: stable
2020-09-25 22:42:39 +08:00
- uses: Swatinem/rust-cache@v1
```
## Inputs
: `key`
An optional key that is added to the automatic cache key.
: `working-directory`
The working directory the action operates in, is case the cargo project is not
located in the repo root.
## Cache Details
2020-10-04 00:39:38 +08:00
The cache currently caches the following directories:
2020-09-25 22:42:39 +08:00
2020-10-04 00:10:54 +08:00
- `~/.cargo/registry/index`
- `~/.cargo/registry/cache`
2020-11-21 19:21:26 +08:00
- `~/.cargo/git`
2020-10-04 00:10:54 +08:00
- `./target`
2020-09-25 22:42:39 +08:00
2020-10-04 00:10:54 +08:00
This cache is automatically keyed by:
2020-09-25 22:42:39 +08:00
2020-10-04 00:10:54 +08:00
- the github `job`,
- the rustc release / host / hash, and
- a hash of the `Cargo.lock` / `Cargo.toml` files.
2020-09-25 22:42:39 +08:00
2020-10-04 00:39:38 +08:00
An additional input `key` can be provided if the builtin keys are not sufficient.
Before persisting, the cache is cleaned of intermediate artifacts and
anything that is not a workspace dependency.
In particular, no caching of workspace crates will be done. For
2020-10-04 00:10:54 +08:00
this reason, this action will automatically set `CARGO_INCREMENTAL=0` to
disable incremental compilation.
2020-10-04 00:39:38 +08:00
2020-11-21 19:21:26 +08:00
The action will try to restore from a previous `Cargo.lock` version as well, so
lockfile updates should only re-build changed dependencies.
Additionally, the action automatically works around
[cargo#8603](https://github.com/rust-lang/cargo/issues/8603) /
[actions/cache#403](https://github.com/actions/cache/issues/403) which would
otherwise corrupt the cache on macOS builds.