git 操作和 LFS 缓存

yos*_*hco 6 github github-actions

试图减轻来自 github 的大量 LFS 拉取。产生费用。
所以很高兴看到 github actions 支持缓存来自 LFS 的大 blob。

这是在 actions/checkout 模块存储库中发布的问题#165上发布的示例

- name: Checkout code
  uses: actions/checkout@v2

- name: Create LFS file list
  run: git lfs ls-files -l | cut -d' ' -f1 | sort > .lfs-assets-id

- name: Restore LFS cache
  uses: actions/cache@v2
  id: lfs-cache
  with:
    path: .git/lfs
    key: ${{ runner.os }}-lfs-${{ hashFiles('.lfs-assets-id') }}-v1

- name: Git LFS Pull
  run: git lfs pull

- name: run compile and package
  run: python CompileAndPackage.py
Run Code Online (Sandbox Code Playgroud)

我当前的流程如下,我声明支持lfs并将submodules支持设置为递归。我调用的 git LFS 位于子模块内。

我应该如何将上述内容整合到我的流程中,如下。

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v2
        with:
          lfs: 'true'
          # recursively checkout submodules.
          submodules: recursive
Run Code Online (Sandbox Code Playgroud)

我不确定在检查缓存之前会发生签出和子模块更新(我假设发生 lfs 拉动)。

这是我想用的

    steps:
      - uses: actions/checkout@v2
        with:
          lfs: 'true'
          submodules: recursive
          ssh-key: ${{ secrets.git_key }}
      - name: Create LFS file list
        run: git lfs ls-files -l | cut -d' ' -f1 | sort > .lfs-assets-id
      
      - name: Restore LFS cache
        uses: actions/cache@v2
        id: lfs-cache
        with:
        path: .git/lfs
        key: ${{ runner.os }}-lfs-${{ hashFiles('.lfs-assets-id') }}-v1
      
      - name: Git LFS Pull
        run: git lfs pull
Run Code Online (Sandbox Code Playgroud)

git submodule update --init我应该在检查缓存后明确调用吗?据我所知,它是通过操作/结账自动发生的

更新

嘿,看起来确实有效!

github 上并没有详细说明谁占用了 LFS 配额。很高兴听到有人说这是合法的。

在此输入图像描述

Nic*_*mer 7

我为此创建了一个操作,action-cached-lfs-checkout

代替

- name: Checkout code
  uses: actions/checkout@v2
  with:
    lfs: true
Run Code Online (Sandbox Code Playgroud)

简单地做

- name: Checkout code
  uses: nschloe/action-cached-lfs-checkout@v1
Run Code Online (Sandbox Code Playgroud)


yos*_*hco 0

已排序,请参阅更新。我要结束了