概要
GitHub Actions で npm audit
の定期実行を行い,パッケージの脆弱性を確認する.
詳細
用語の確認
GitHub Actions で登場する用語を簡単に整理する.詳細は公式ドキュメントなどを参照されたい.
ワークフロー
GitHub Actions で何かをしたいときに作成するもの.
- 以下の内容を YAML 形式で記述する.
- いつ (イベント)
- 何を (ジョブ,アクション)
- どこで (ランナー)
イベント
ワークフローを実行するきっかけ (トリガー) となるもの.
- 例えば,リポジトリにコミットがプッシュされたらワークフローを実行する,ということができる.
- もちろん,手動実行もイベントに含まれる.
ジョブ
ワークフローで実行する具体的な処理.
- 実行できるのはシェルスクリプトまたはアクションである.
アクション
ジョブで実行できる便利ツール.
- 例えば,GitHub からの Git リポジトリのプルをやってくれるアクションが用意されている.
ランナー
ジョブの実行が行われるサーバー.
- OS として Ubuntu Linux,Microsoft Windows,macOS を選択できる.
ワークフローの作成
リポジトリ内の .github/workflows
ディレクトリに以下の YAML ファイルを作成する.
daily-npm-audit.yml
# npm auditを毎日18時(JST)に実行する
name: Daily npm audit
on:
schedule:
# Runs at every 9:00(UTC) of every day
- cron: '0 9 * * *'
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
# Sets permissions of the GITHUB_TOKEN
permissions: {}
jobs:
# Check job
check:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Node
uses: actions/setup-node@v4
- name: Check dependencies
run: npm audit
ポイント
- 決められた時刻にワークフローを実行するには
schedule
イベントを用いる. - 実行時刻の設定は cron 構文で記述する.
- cron 構文で指定する時刻は協定世界時 (UTC) であることに注意.
イベントトリガーに workflow_dispatch
も設定しているため,作成したワークフローを GitHub 上で手動実行できる.
ワークフロー実行の通知
ワークフロー実行の通知は https://github.com/settings/notifications で設定できる.基本的にはワークフローが失敗したときだけ通知させればよいだろう.
本記事で作成したワークフローが失敗することは,npm audit
で脆弱性が報告されたことを意味するので,通知が来たら npm audit fix
などの対応を行うことになる.