如何在GitHub Action中缓存字符串值并在后续构建中使用
解决方案:保存SHA字符串并在后续构建中复用
原代码存在几个核心问题导致无法复用之前的SHA值:
- 无论缓存是否命中,都会执行写入步骤覆盖文件,缓存的旧值被直接替换
- 未正确使用GitHub提供的SHA变量(原代码中的
MY STRING是无效变量) - 缓存逻辑没有区分"首次写入"和"复用缓存"的场景
修正后的完整配置如下:
- name: Cache SHA value id: cache-sha uses: actions/cache@v3 with: path: microservices-results key: sha-${{ github.ref }} - name: Write current SHA to file (only if cache miss) if: steps.cache-sha.outputs.cache-hit != 'true' run: echo "${{ github.sha }}" > microservices-results - name: Retrieve and use SHA value run: | SHA_VALUE=$(cat microservices-results) echo "The cached SHA value is $SHA_VALUE" # 在这里添加后续需要调用SHA值的逻辑
关键调整说明:
- 添加
if: steps.cache-sha.outputs.cache-hit != 'true'条件,只有当缓存未命中时才写入当前SHA,避免覆盖缓存中的旧值 - 替换无效的
MY STRING为GitHub内置变量${{ github.sha }},获取当前提交的SHA值 - 缓存key保持
sha-${{ github.ref }},确保同一个分支的构建复用同一套缓存
这样配置后,首次构建会写入当前SHA并缓存,后续同分支的构建会直接读取缓存中的SHA值,实现跨构建复用的需求。
内容的提问来源于stack exchange,提问作者gamechanger17
相关产品推荐
相关产品推荐

