如何处理GitHub操作在7天后删除其缓存



我有一个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扩展,从终端管理您的缓存。

了解有关依赖项缓存的更多信息,以加快"操作"工作流的速度。

最新更新