能否在GitHub Actions环境变量定义中使用hashFiles函数?
在GitHub Actions环境变量中使用hashFiles函数的问题
直接说结论:你示例里的写法无效,但调整语法后可以实现。
为什么原写法不生效
你在env里把hashFiles('**/yarn.lock')用引号包裹的话,GitHub Actions会将其视为普通字符串,不会执行这个函数。最终缓存key里拿到的不是yarn.lock的实际哈希值,而是字面量hashFiles('**/yarn.lock'),完全起不到根据文件内容生成动态缓存key的作用。
正确的实现方式
要让hashFiles函数被正常解析执行,必须把它放在GitHub Actions的表达式语法${{ ... }}中,再赋值给环境变量:
env: HASH_YARN_LOCK: ${{ hashFiles('**/yarn.lock') }} - uses: actions/cache@v3 with: path: | path/to/dependencies some/other/dependencies key: ${{ runner.os }}-${{ env.HASH_YARN_LOCK }}
这样环境变量HASH_YARN_LOCK就会被赋值为yarn.lock文件的实际哈希值,后续缓存key也能随文件内容变化自动更新。
验证方法
如果不确定环境变量是否正确获取了哈希值,可以加一个步骤打印出来确认:
- name: 打印哈希值 run: echo "Yarn.lock哈希值: $HASH_YARN_LOCK"
内容的提问来源于stack exchange,提问作者Paul Razvan Berg
相关产品推荐
相关产品推荐

