mirror of
https://github.com/actions/cache.git
synced 2024-11-15 18:13:52 +08:00
Fix bugs in example of how to use with pipenv (#607)
* Fix bugs in example of how to use with pipenv The current example of how to use `@actions/cache` with pipenv has two problems: 1. The cached virtualenv that pipenv creates has `bin/python` as a symlink into paths like `/opt/hostedtoolcache/Python/3.7.11` that explicitly include the patch version of python. When the cache is restored onto a machine running a slightly different version of python, e.g., when GitHub upgrades its runners from python 3.7.10 to 3.7.11, then any attempt to run python in the workflow mysteriously fails with errors like `Failed to load paths: /bin/sh: 1: /home/runner/.local/share/virtualenvs/myrepo-sOIMCiTO/bin/python: not found`. Therefore the patch version of python should be included in the cache key. 2. `pipenv --install` has the unfortunate behaviour of not cleaning out any pre-existing packages. That is, if the `Pipfile` first contains dependencies on `foo` and `bar`, and then you remove `bar` from the `Pipfile` and run `pipenv install` again, `bar` is still included in the virtualenv. This can cause false-positive test failures: when a dependency is removed from the `Pipfile` but there is still code that relies on the removed dependency, tests can still pass if the dependency comes from the cache based on a previous revision of `Pipfile.lock`. Therefore `restore-keys` should not be set. This PR attempts to address both of these issues. * Explain why setup-python is included in example
This commit is contained in:
parent
0638051e9a
commit
5807af2642
11
examples.md
11
examples.md
@ -435,12 +435,17 @@ jobs:
|
|||||||
## Python - pipenv
|
## Python - pipenv
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
|
- name: Set up Python
|
||||||
|
# The actions/cache step below uses this id to get the exact python version
|
||||||
|
id: setup-python
|
||||||
|
uses: actions/setup-python@v2
|
||||||
|
|
||||||
|
⋮
|
||||||
|
|
||||||
- uses: actions/cache@v2
|
- uses: actions/cache@v2
|
||||||
with:
|
with:
|
||||||
path: ~/.local/share/virtualenvs
|
path: ~/.local/share/virtualenvs
|
||||||
key: ${{ runner.os }}-pipenv-${{ hashFiles('Pipfile.lock') }}
|
key: ${{ runner.os }}-python-${{ steps.setup-python.outputs.python-version }}-pipenv-${{ hashFiles('Pipfile.lock') }}
|
||||||
restore-keys: |
|
|
||||||
${{ runner.os }}-pipenv-
|
|
||||||
```
|
```
|
||||||
|
|
||||||
## R - renv
|
## R - renv
|
||||||
|
Loading…
Reference in New Issue
Block a user