如何为GitHub Actions缓存诗歌安装

时间:2020-07-19 08:16:32

标签: continuous-integration github-actions python-poetry

我尝试使用此actions/cache@v2来缓存诗歌venv。仅安装了两个库pylintpytest。似乎安装已被缓存(缓存大小〜26MB)。但是,缓存命中后就无法检索它们。

在运行时找不到缓存安装的库

诗歌排行榜

Package    Version
---------- -------
pip        20.1.1
setuptools 41.2.0 

https://github.com/northtree/poetry-github-actions/runs/875926237?check_suite_focus=true#step:9:1

YAML为here

我能否知道如何使用actions/cache@v2来缓存诗歌安装/ virturalenv,以避免重新安装依赖项。

2 个答案:

答案 0 :(得分:3)

在YAML文件中,您正在使用dschep/install-poetry-action@v1.3安装Poetry,该诗设置了poetry config virtualenvs.create false,这意味着将使用当前的python解释器/ virtualenv。因为您在任何地方都没有使用virtualenv激活诗歌,而只是使用系统python,并且~/.poetry目录内没有virtualenv。

如果您设置poetry config virtualenvs.create true,它应该可以工作,例如:

    - name: Install poetry
      uses: dschep/install-poetry-action@v1.3

    - name: Configure poetry
      run: |
        poetry config virtualenvs.create true
        poetry config virtualenvs.in-project false
        poetry config cache-dir ~/.poetry
        poetry config virtualenvs.path ~/.poetry/venv

注意:根据dschep/install-poetry-action的文档,有一个选项可以在安装过程中设置poetry config virtualenvs.create true,但目前似乎已损坏(请参阅https://github.com/dschep/install-poetry-action/issues/11)。无论如何,我个人都喜欢在与其他所有内容相同的配置块中进行操作。

答案 1 :(得分:1)

@northtree的答案是正确的,但是对于任何浏览的人,您应该知道不再保留引用的操作。

对于使用版本> = 1.1.0的诗歌安装,我建议使用此代码片段来缓存您的诗歌依存关系:

...
- name: Install poetry
  uses: snok/install-poetry@v1.0.0
  with:
    virtualenvs-create: true
    virtualenvs-in-project: true
- name: Load cached venv
  id: cached-poetry-dependencies
  uses: actions/cache@v2
  with:
    path: .venv
    key: venv-${{ runner.os }}-${{ hashFiles('**/poetry.lock') }}
- name: Install dependencies
  run: poetry install
  if: steps.cached-poetry-dependencies.outputs.cache-hit != 'true'
...

更完整的示例记录在here:)