diff options
author | Michael Davis | 2022-03-14 02:44:51 +0000 |
---|---|---|
committer | GitHub | 2022-03-14 02:44:51 +0000 |
commit | 43fc073cb3de9cb007212e48c9e755a602bccaa2 (patch) | |
tree | 7d2f14fdfdbeb5b2a908b822b0eb2249d785ce0c | |
parent | c94c0d9f1c01344765d564946b43dd5a588cb7b3 (diff) |
ci: configure restore-keys for caches (#1806)
`restore-keys` is a configuration option for the actions/cache action
which specifies fallback behavior. The [docs][docs] say it best:
> When a cache miss occurs, the action searches for alternate keys
> called `restore-keys`.
>
> If you provide `restore-keys`, the `cache` action sequentially
> searches for any caches that match the list of `restore-keys`.
> ... If there are no exact matches, the action searches for partial
> matches of the restore keys. When the action finds a partial match,
> the most recent cache is restored to the `path` directory.
So this improves caching when there's a miss. For example if I edit
`.github/workflows/languages.toml`, the current behavior is that the
cache for downloaded grammars will miss and all of them will need to
be fetched again. With `restore-keys`, we use the latest published
cache as 'good enough', we'll fetch whatever grammars changed, and
then at the end we publish a new cache under the new hash.
[docs]: https://docs.github.com/en/actions/using-workflows/caching-dependencies-to-speed-up-workflows#example-using-the-cache-action
-rw-r--r-- | .github/workflows/build.yml | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index f1f73151..be954774 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -27,18 +27,21 @@ jobs: with: path: ~/.cargo/registry key: ${{ runner.os }}-v2-cargo-registry-${{ hashFiles('**/Cargo.lock') }} + restore-keys: ${{ runner.os }}-v2-cargo-registry- - name: Cache cargo index uses: actions/cache@v2.1.7 with: path: ~/.cargo/git key: ${{ runner.os }}-v2-cargo-index-${{ hashFiles('**/Cargo.lock') }} + restore-keys: ${{ runner.os }}-v2-cargo-index- - name: Cache cargo target dir uses: actions/cache@v2.1.7 with: path: target key: ${{ runner.os }}-v2-cargo-build-target-${{ hashFiles('**/Cargo.lock') }} + restore-keys: ${{ runner.os }}-v2-cargo-build-target- - name: Run cargo check uses: actions-rs/cargo@v1 @@ -64,18 +67,21 @@ jobs: with: path: ~/.cargo/registry key: ${{ runner.os }}-v2-cargo-registry-${{ hashFiles('**/Cargo.lock') }} + restore-keys: ${{ runner.os }}-v2-cargo-registry- - name: Cache cargo index uses: actions/cache@v2.1.7 with: path: ~/.cargo/git key: ${{ runner.os }}-v2-cargo-index-${{ hashFiles('**/Cargo.lock') }} + restore-keys: ${{ runner.os }}-v2-cargo-index- - name: Cache cargo target dir uses: actions/cache@v2.1.7 with: path: target key: ${{ runner.os }}-v2-cargo-build-target-${{ hashFiles('**/Cargo.lock') }} + restore-keys: ${{ runner.os }}-v2-cargo-build-target- - name: Copy minimal languages config run: cp .github/workflows/languages.toml ./languages.toml @@ -85,6 +91,7 @@ jobs: with: path: runtime/grammars key: ${{ runner.os }}-v2-tree-sitter-grammars-${{ hashFiles('languages.toml') }} + restore-keys: ${{ runner.os }}-v2-tree-sitter-grammars- - name: Run cargo test uses: actions-rs/cargo@v1 @@ -117,18 +124,21 @@ jobs: with: path: ~/.cargo/registry key: ${{ runner.os }}-v2-cargo-registry-${{ hashFiles('**/Cargo.lock') }} + restore-keys: ${{ runner.os }}-v2-cargo-registry- - name: Cache cargo index uses: actions/cache@v2.1.7 with: path: ~/.cargo/git key: ${{ runner.os }}-v2-cargo-index-${{ hashFiles('**/Cargo.lock') }} + restore-keys: ${{ runner.os }}-v2-cargo-index- - name: Cache cargo target dir uses: actions/cache@v2.1.7 with: path: target key: ${{ runner.os }}-v2-cargo-build-target-${{ hashFiles('**/Cargo.lock') }} + restore-keys: ${{ runner.os }}-v2-cargo-build-target- - name: Run cargo fmt uses: actions-rs/cargo@v1 @@ -161,18 +171,21 @@ jobs: with: path: ~/.cargo/registry key: ${{ runner.os }}-v2-cargo-registry-${{ hashFiles('**/Cargo.lock') }} + restore-keys: ${{ runner.os }}-v2-cargo-registry- - name: Cache cargo index uses: actions/cache@v2.1.6 with: path: ~/.cargo/git key: ${{ runner.os }}-v2-cargo-index-${{ hashFiles('**/Cargo.lock') }} + restore-keys: ${{ runner.os }}-v2-cargo-index- - name: Cache cargo target dir uses: actions/cache@v2.1.6 with: path: target key: ${{ runner.os }}-v2-cargo-build-target-${{ hashFiles('**/Cargo.lock') }} + restore-keys: ${{ runner.os }}-v2-cargo-build-target- - name: Generate docs uses: actions-rs/cargo@v1 |