はるさめ.dev

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

参考

コメント