GitHub Actions缓存优化

润信云 技术支持

一、引言

在 GitHub Actions 工作流中,重复下载和安装依赖项等操作会耗费大量时间,影响构建和测试的效率。缓存优化是解决这一问题的有效手段,它能够显著提升工作流的执行速度。

二、GitHub Actions 缓存机制概述

GitHub Actions 提供了 actions/cache 这一官方 Action 来实现缓存功能。其原理是在工作流运行时将指定路径下的数据存储到缓存中,当下次运行工作流且缓存存在时,可直接从缓存中恢复数据,避免重复操作。

三、缓存优化的实现步骤

(一)确定缓存内容

  1. 依赖项缓存:对于基于 Node.js 的项目,node_modules 目录包含了项目的所有依赖包。可以将其设置为缓存内容,避免每次运行都重新安装依赖。在 Python 项目中,pippoetry 安装的包所在目录同样可进行缓存。
  2. 构建产物缓存:例如在构建前端项目时,打包后的静态资源文件,像经过 Webpack 处理后的 JavaScript 和 CSS 文件等,若每次构建都重新生成会浪费时间,可将这些构建产物所在目录缓存起来。

(二)使用 actions/cache

以下是一个简单的 Node.js 项目示例:

name: Node.js CI
on: [push]
jobs:
  build:
    runs-on: ubuntu - latest
    steps:
    - uses: actions/checkout@v2
    - name: Cache node_modules
      uses: actions/cache@v3
      with:
        path: node_modules
        key: ${{ runner.os }} - node - ${{ hashFiles('package - lock.json') }}
        restore - keys: |
          ${{ runner.os }} - node -
    - name: Install dependencies
      run: npm install
    - name: Build
      run: npm run build

在上述代码中:

  • path 指定了要缓存的目录为 node_modules
  • key 是缓存的唯一标识符,这里结合了运行器的操作系统、Node.js 以及 package - lock.json 文件的哈希值。这样当 package - lock.json 文件内容不变时,就能复用缓存。
  • restore - keys 是备用的恢复键,当主 key 不存在时,会尝试使用以 $ {{ runner.os }} - node - 开头的键来恢复缓存。

(三)缓存清理与版本管理

为了避免缓存占用过多空间,需要定期清理旧的缓存。可以结合 GitHub 的垃圾回收机制,设置缓存的过期时间。另外,当项目依赖或构建逻辑发生较大变化时,要及时更新缓存的 key,以确保缓存的正确性。

四、优化效果评估

通过在工作流中添加计时步骤,对比缓存优化前后工作流的执行时间。可以使用 GitHub Actions 的内置日志查看每次运行的耗时,直观地感受缓存优化带来的效率提升。同时,监控缓存的命中率,了解缓存被成功复用的比例,进一步评估优化效果。

总之,合理运用 GitHub Actions 的缓存功能并进行优化,能够极大地提高项目构建和测试的效率,减少开发者等待的时间,提升开发体验。

本文链接:https://blog.runxinyun.com/post/954.html 转载需授权!

分享到:
版权声明
网站名称: 润信云资讯网
本站提供的一切软件、教程和内容信息仅限用于学习和研究目的。
不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。
我们非常重视版权问题,如有侵权请邮件与我们联系处理。敬请谅解!邮件:7104314@qq.com
网站部分内容来源于网络,版权争议与本站无关。请在下载后的24小时内从您的设备中彻底删除上述内容。
如无特别声明本文即为原创文章仅代表个人观点,版权归《润信云资讯网》所有,欢迎转载,转载请保留原文链接。
0 7

留言0

评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。