JavaScript 開発時の Github Actions テンプレートメモ
に公開毎回忘れてしまうのでメモ
- ワークフローの同時実行を制限(Concurrency)
- すでに実行中のワークフローを再実行した場合に、
- パイプラインでコマンドをつなげている際にエラーが発生した段階で終了するようにシェルを明示的に指定(defaults.run.shell: bash)
- ジョブのタイムアウト設定
- デフォルトだと6時間なので無駄に実行しないように
- ソースコードのチェックアウト
- node をセットアップ
- pnpm のキャッシュを設定
- .node-version で node のバージョン指定
- pnpm のセットアップ
- パッケージインストール
name:
on:
push:
branches: [main] # キャッシュを引き継ぐために main push 時にも実行
pull_request:
branches: [main]
# 同じブランチ名・同じワークフローの場合、同時実行を制限する
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
# 明記しなくてもデフォルトは bash で内部実行されるのは `bash -e {0}`
# bash と明記すると内部で実行されるのは `bash --noprofile --norc -eo pipefail {0}` で pipefail によってパイプで繋いだコマンドが失敗した段階でエラーになるため明記
defaults:
run:
shell: bash
jobs:
my-job:
timeout-minutes: 10
runs-on: ubuntu-latest
steps:
- name: チェックアウト
uses: actions/checkout@v4
- name: pnpm のセットアップ
uses: pnpm/action-setup@v4
- name: Node.js のセットアップ
uses: actions/setup-node@v4
with:
node-version-file: "./.node-version"
cache: "pnpm"
- name: パッケージインストール
run: pnpm install