🐙

Github Actions で node module をキャッシュする

2024/01/18に公開

概要

Github Actions で node module をキャッシュします。
グローバルパッケージをキャッシュする場合は Caching global packages data を参照してください。

Workflow

job setup で node module をキャッシュして、他の job はキャッシュした node module を使用します。

.github/workflows/reviewdog.yaml
name: reviewdog

on:
  pull_request:
    branches:
      - main
env:
  NODE_VERSION: '14.15.0'

jobs:
  setup:
    name: setup
    runs-on: ubuntu-20.04
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v3
      - name: cache node modules
        id: cache-node-modules
        uses: actions/cache@v4
        with:
          path: node_modules
          key: ${{ runner.os }}-${{ hashFiles('package-lock.json') }}
      - name: install dpendencies
        run: npm ci --ignore-scripts
  build:
    name: build
    runs-on: ubuntu-20.04
    needs: setup
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v3
      - name: restore node modules
        id: cache-node-modules
        uses: actions/cache@v4
        with:
          path: node_modules
          key: ${{ runner.os }}-${{ hashFiles('package-lock.json') }}
      - name: check build
        run: npm run build
  eslint:
    name: eslint
    runs-on: ubuntu-20.04
    needs: setup
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v3
      - name: restore node modules
        id: cache-node-modules
        uses: actions/cache@v4
        with:
          path: node_modules
          key: ${{ runner.os }}-${{ hashFiles('package-lock.json') }}
      - name: check apps/app-web
        uses: reviewdog/action-eslint@v1
        with:
          level: error
          eslint_flags: '--quiet apps/app-web/src/**/*.{ts,js}'
          reporter: github-pr-check
          filter_mode: nofilter
  stylelint:
    name: stylelint
    runs-on: ubuntu-20.04
    needs: setup
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v3
      - name: restore node modules
        id: cache-node-modules
        uses: actions/cache@v4
        with:
          path: node_modules
          key: ${{ runner.os }}-${{ hashFiles('package-lock.json') }}
      - name: check app-web
        uses: reviewdog/action-stylelint@v1
        with:
          level: error
          stylelint_input: 'apps/app-web/**/*.scss'
          stylelint_config: 'apps/app-web/.stylelintrc.json'

実行結果

Discussion