如何让GitHub Actions在运行失败后仍保留指定缓存?
GitHub Actions 失败后保留缓存的解决方案
默认情况下,actions/cache@v2 只会在整个作业成功完成时生成新的缓存条目。如果后续测试步骤失败导致作业终止,之前安装的构建工具就不会被缓存下来,这就是你每次调试都要重新等待20分钟的原因。
解决这个问题最直接的方法是升级到 actions/cache@v3(或更高版本),该版本新增了 save-always 参数,可以强制缓存步骤在作业成功或失败时都保存缓存内容。
修改后的缓存配置如下:
- uses: actions/cache@v3 name: Cargo Cache with: path: ~/.cargo key: ${{ runner.os }}-cargo-${{ hashFiles('Cargo.toml') }} restore-keys: | ${{ runner.os }}-cargo save-always: true
关键说明:
save-always: true:无论后续步骤是否失败,只要这个缓存步骤执行过,就会将当前~/.cargo目录的内容保存到缓存中。- 原配置中
restore-keys里重复了和key完全一致的条目,可删除该重复项,只保留通用前缀${{ runner.os }}-cargo,这样在找不到精确匹配的缓存时,会回退到最近的通用缓存。
另外需要确认 ~/.cargo 确实包含了你所有需要缓存的构建工具和依赖,避免缓存路径遗漏导致无效缓存。
内容的提问来源于stack exchange,提问作者McBain
相关产品推荐
相关产品推荐

