我正在尝试使用 Github 操作部署到 S3。我已经创建了 .github/workflows 目录,并遵循教程来帮助我编写工作流.yml 文件。
一切似乎都运行良好,直到我需要缓存node_modules。我遵循的教程没有详细说明或解释需要向“键”添加什么值以及从哪里获取该值。目前我刚刚使用了我的存储库的名称,但我认为这是不正确的。这就是我的 .yml 文件的缓存部分现在的样子...
- name: Caching Gatsby
id: gatsby-cache-build
uses: actions/cache@v2
with:
path: |
public
.cache
node_modules
key: ${{ runner.os }}-gatsby-${{ github.run_id }}
restore-keys: |
${{ runner.os }}-gatsby-
当我的操作在 Github 中运行时收到的错误是“找不到输入键的缓存:Linux-gatsby-1563397146,Linux-gatsby-”
我尝试阅读 Github 上有关这些键的使用的文档,但我发现它们太难理解了。我认为这里需要使用一些特定的值,具体取决于构建脚本的运行方式以及我的安装方式。我允许构建在 ubuntu-latest 上运行,并使用 npm 进行安装并运行构建。
谁能告诉我,我在“key”和“restore-keys”旁边使用什么值以及从哪里获取这些值?
这不起作用,因为
${{ github.run_id }}
仅标识存储库中的工作流程,并且在重新运行时不会更改,因此不会检测到后续提交中对已安装包的更改,因为它会像第一次一样重用缓存已创建。
您应该选择一个唯一标识缓存目录将包含的内容并相应更改的键。在您的情况下,将是 package-lock.json 文件的内容,您可以对其进行哈希处理。
所以像这样:
- name: Caching Gatsby
id: gatsby-cache-build
uses: actions/cache@v2
with:
path: |
public
.cache
node_modules
key: ${{ runner.os }}-${{ hashFiles('**/package-lock.json') }}
一些注意事项: