我有一个GitHub Action,它为我的Python/Django项目运行测试。它缓存Pipenv创建的虚拟环境。以下是除相关步骤外几乎所有内容的工作流程:
jobs:
build:
runs-on: ubuntu-latest
services:
# postgres:
steps:
#- uses: actions/checkout@v2
#- name: Set up Python
#- name: Install pipenv and coveralls
- name: Cache pipenv virtualenv
uses: actions/cache@v2
id: pipenv-cache
with:
path: ~/.pipenv
key: ${{ runner.os }}-pipenv-v4-${{ hashFiles('**/Pipfile.lock') }}
restore-keys: |
${{ runner.os }}-pipenv-v4-
- name: Install dependencies
env:
WORKON_HOME: ~/.pipenv/virtualenvs
PIPENV_CACHE_DIR: ~/.pipenv/pipcache
if: steps.pipenv-cache.outputs.cache-hit != 'true'
run: pipenv install --dev
# Run tests etc.
这通常工作得很好,但由于缓存在7天后被删除,如果运行频率低于7天,它就找不到缓存,并且安装依赖项步骤失败,返回:
FileNotFoundError: [Errno 2] No such file or directory: '/home/runner/.pipenv/virtualenvs/my-project-CfczyyRI/bin/pip'
然后我碰撞缓存密钥的版本号(上面的v4
(,操作运行正常
我以为if: steps.pipenv-cache.outputs.cache-hit != 'true'
会解决这个问题,但它没有。我错过了什么?
-
第一种选择:使用单独的工作流,通过
schedule
触发事件,您可以按定期计划运行工作流
通过这种方式,您可以强制刷新工作流缓存中的这些依赖项。 -
第二种选择:在单独的工作流程中再次使用
actions/github-script
中的github.rest.actions.getActionsCacheList
(如图所示(,只是为了读取所述缓存,并检查它在7天后是否仍然消失。 -
第三种选择:检查通过新的Web UI读取缓存是否足以强制刷新。
关于第三点(2022年10月(:
从Web界面管理操作工作流中的缓存
缓存依赖项和其他通常重用的文件使开发人员能够加快GitHub Actions的工作流程,并使其更加高效。
我们现在已经从web界面启用了缓存管理,使开发人员能够在GitHub存储库中获得更多的透明度和对缓存使用的控制。
操作使用
actions/cache
的用户现在可以:
- 查看存储库的所有缓存项的列表
- 使用特定元数据(如缓存大小、创建时间或上次访问时间(对缓存列表进行筛选和排序
- 删除损坏或过时的缓存项
- 监控存储库和组织的聚合缓存使用情况
除了我们现在启用的缓存管理UX外,您还可以使用我们的缓存API或安装Actions缓存的GitHub CLI扩展,从终端管理您的缓存。
了解有关依赖项缓存的更多信息,以加快"操作"工作流的速度。