github action cache
如果不知道github action 是什么,建议不要继续阅读。
github action cache 官方手册
github action cache 首页
action cache 可以做什么
action cache 可以帮助我们缓存一些action生成的数据。一次action的job执行成功,我们可以指定缓存哪个目录或哪些目录的文件。
言外之意,job执行失败,是不会缓存数据的。
cache的key
缓存使用key来标识。key 是一个不超过512字符的字符串。可以自己定义,简单的用法可以参考下面例子中的key。
这里的hashFiles是计算指定文件的sha256值。
key的示例:
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles(‘deps/init/oceanbase.el7.x86_64.deps’) }}
共享
缓存不仅仅是key一致就可以使用了,有一些限制。通常不同的代码分支、tag、不同的操作系统都不能使用同一个缓存。
但是也有例外,比如文章来源:https://www.toymoban.com/news/detail-578271.html
- 默认分支(通常是master或main)的缓存可以让其它分支使用。
- 如果指定
enableCrossOsArchive
为true就可以跨操作系统使用。
TIPS
- 缓存的总大小不能超过10G,否则会触发淘汰。
- 超过7天没有访问的缓存会被删除。
- 缓存可以手动删除,在action页面可以找到cache管理页面。
- 缓存的匹配不仅仅使用key唯一值匹配,还可以有一些其它的匹配规则,具体的参考文档中的
restore-keys
- 缓存的操作可以拆分成存储和恢复两个动作,这样可以处理更复杂的场景,具体可以参考 action/cache的说明。
一个例子(例子来自 OceanBase):文章来源地址https://www.toymoban.com/news/detail-578271.html
name: Compile
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
jobs:
ubuntu-x86_64:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v3
- name: Install environment
shell: bash
run: sudo apt-get install -y git wget rpm rpm2cpio cpio make build-essential binutils m4 libtool-bin language-pack-en
- name: Cache deps
id: cache-deps
uses: actions/cache@v3
env:
cache-name: cache-deps
with:
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('deps/init/oceanbase.el7.x86_64.deps') }}
# 缓存的数据放在哪个目录。
# 如果没有命中,job执行完成后,会把这个目录的数据打包缓存起来。
# 如果命中了,就把缓存的数据恢复到这个目录中
path: deps/3rd
enableCrossOsArchive: true
- name: Build init
# 判断如果判断没有命中,就执行某个动作
if: steps.cache-deps.outputs.cache-hit != 'true'
run: bash build.sh init
- name: Build project
shell: bash
run: |
bash build.sh debug
cd build_debug && make -j4
到了这里,关于TIPS 关于github action cache的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!