🏦
global installしたNode.js製CLIをGitHub Actionsでキャッシュする
経緯
markdownlint-cli
やspectral-cli
などの、npmやyarn等経由でしかインストールできないCLIをキャッシュしたかった。
結論
markdownlint
をcacheして実行する例を示す。
他のCLIをキャッシュしたい場合はmarkdownlint
やmarkdownlint-cli
となっているところをpackageに合わせて変えれば良い。
# .github/workflows/lint.yml
# START: 関係ない
name: Lint
on:
push:
branches:
- main
pull_request:
permissions:
contents: read
pull-requests: write
# END: 関係ない
jobs:
markdown-lint:
runs-on: ubuntu-latest
env:
MARKDOWNLINT_CLI_VERSION: 0.36.0
steps:
- uses: actions/checkout@v4
- name: Cache markdownlint-cli
id: cache-markdownlint-cli
uses: actions/cache@v3
with:
path: |
# コマンド名毎に変える `/usr/local/bin/{command_name}`
/usr/local/bin/markdownlint
# パッケージ名毎に変える `/usr/local/lib/node_modules/{package_name}`
/usr/local/lib/node_modules/markdownlint-cli
key: ${{ runner.os }}-markdonwlint-cli-${{ env.MARKDOWNLINT_CLI_VERSION }}
- if: steps.cache-markdownlint-cli.outputs.cache-hit != 'true'
name: Install markdownlint-cli
run: npm install -g markdownlint-cli@${{ env.MARKDOWNLINT_CLI_VERSION }}
- run: markdownlint --config .markdownlint.yml '**/*.md'
Discussion