type
status
date
slug
summary
category
tags
create_time
Jul 23, 2025 02:30 PM
icon
password
my_create_time

📝 前言

这是 DevOps 专题的第十篇,回顾一下前几篇的内容:
这一篇我们继续介绍如何使用 Gitea Actions 来配置构建缓存,从而大幅提升构建性能,缩减构建时间。

🧭 背景介绍

随着 DevOps 与自托管 CI/CD 的普及,Gitea Action 作为 Gitea 的内建 CI 解决方案,越来越多被用于中小团队的日常开发与部署流程中。
在每次构建过程中,重复下载安装依赖包是最常见、最耗时的操作。
如何进一步提高构建效率是大家比较关注的问题。
本指南将围绕构建缓存的加速实践展开,帮助你最大化地利用本地资源、提升构建效率,打造更流畅的开发体验。

🔍 使用场景

主要适用于以下场景:
  • 构建时间长、依赖复杂的项目(如 Node.js、Java、Python、Go)
  • 依赖包重复下载安装(如 npm、pip、maven、go modules)
  • 希望将依赖缓存至宿主机或远程缓存服务

📋 前提条件

在开始前,请确认以下环境准备已完成:

🚀 详细步骤

1️⃣ 编写工作流文件

这里我们以一个前端的项目为例,该项目使用yarn作为包管理器。
创建.gitea/workflows/build.yaml文件,内容参考如下:
配置说明:
  • cache action: 这次我们引入了一个新的action cache,这是官方提供的专门用于构建时存储和恢复缓存的。
  • path: 指定要缓存的文件或目录路径,我这里列的是NodeJS的常见路径,如果是其他语言需要换成别的,比如Java 就缓存~/.m2/repository
  • key: 缓存的唯一键,这里我是通过生成yarn.lock的hash作为键的一部分,当yarn.lock 文件发生变更,如引入新的依赖时,缓存就失效。
  • restore-keys: 缓存模糊查找关键词,当 key 没有命中缓存时,系统会依次尝试用restore-keys中的前缀模糊匹配已有缓存。我这里直接写的是很大返回的一个路径,这样即使lock文件轻微改动也能复用部分缓存,避免完全从零开始。
  • steps.yarn-cache.outputs.cache-hit: 在安装依赖的步骤中我们新添加了一个if判断,这是由cache action提供的一个变量,当输出为true时则代表命中了缓存,我这里是判断不为true才执行这个步骤,也即是未命中缓存执行安装依赖。
PS: 需要注意的是steps.<yarn-cache>需要跟上一步的步骤id保持一致。

2️⃣ 推送代码触发构建

只需将代码推送至 main 分支,Gitea Actions 会自动触发工作流进行构建。
当首次构建时未命中缓存会按正常全部执行,而当第二次再运行时就可以查看到跳过了依赖安装这一步。
可以在 Gitea 的”Actions”界面查看执行进度与日志。
notion image
notion image
出现圆圈斜杠图标时,则表示该步骤已被跳过了,也即是我们缓存依赖成功啦~

✅ 总结

最后总结一下,不得不说缓存是计算机科学里面非常重要的一项技术。
通过 GitHub 官方的 actions/cache,我们可以在 Gitea Actions 中轻松实现:
  • 高效率构建
  • 避免重复下载依赖
  • 自动化控制缓存命中逻辑
该方案是实现构建加速的首选之一。
💡
有关文章的任何疑问,欢迎您在底部评论区留言,一起交流~
若文章对您有帮助,欢迎 请我喝杯咖啡~
 
上一篇
网站”日常瞬间”开源说明
下一篇
网站"日常瞬间"功能设计说明

评论
Loading...