带有 npm install -g 的 GitHub Action 缓存(不带 package.json)

Dav*_*wys 7 github-actions

Github Action 缓存可以用来加速全局安装的节点工具吗?

我在ruby存储库上使用语义发布,并且我不想污染该存储库package.json

我的语义发布配置位于.releaserc

我可以运行此 GitAction 来更新我的 SemVer。

name: SemVer
on:
  push:
    branches: [ main ]
jobs:
  release:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - uses: actions/setup-node@v2
        with:
          node-version: '16'

      - name: Install Global Dependencies
        run: npm -g install semantic-release @semantic-release/changelog @semantic-release/commit-analyzer @semantic-release/exec @semantic-release/git @semantic-release/release-notes-generator

      - name: Run SemVer
        run: semantic-release
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
Run Code Online (Sandbox Code Playgroud)

安装依赖项需要22秒

在此输入图像描述

我尝试将我发现的缓存配置集成到我的工作流程中,但这不起作用,我认为这是因为没有package-lock.json可构建哈希的对象。

key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }}

Run Code Online (Sandbox Code Playgroud)
name: SemVer
on:
  push:
    branches: [ main ]
jobs:
  release:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - uses: actions/setup-node@v2
        with:
          node-version: '16'

      - name: Cache node modules
        uses: actions/cache@v2
        id: cache-node-modules
        env:
          cache-name: cache-node-modules
        with:
          path: ~/.npm
          key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }}
          restore-keys: |
            ${{ runner.os }}-build-${{ env.cache-name }}-
            ${{ runner.os }}-build-
            ${{ runner.os }}-

      - name: Install Global Dependencies
        if: steps.cache.outputs.cache-hit != 'true'
        run: npm -g install semantic-release @semantic-release/changelog @semantic-release/commit-analyzer @semantic-release/exec @semantic-release/git @semantic-release/release-notes-generator

      - name: Run SemVer
        run: semantic-release
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

Jo-*_*-Go 2

如果没有,则无需对 a 进行哈希处理package-lock.json,您可以对任何其他文件进行哈希处理,也可以对任何文件进行哈希处理,例如:

with:
  path: ~/.npm
  key: ${{ runner.os }}-build-${{ env.cache-name }}
Run Code Online (Sandbox Code Playgroud)

文档可在此处获取https://docs.github.com/en/actions/using-workflows/caching-dependency-to-speed-up-workflows