ikmnjrd.github.io

GitHubにpushした時に特定コマンドの実行結果でマージ可否の設定

Posted on 2022-09-11
目次

手順

ワークフローの設定(コード管理できるもの)とGitHubのUI上から設定するものに分けて考える

ワークフローの設定

例として貼り付けますが、ここを参考にするなど自分の環境に合わせカスタマイズしてください。

name: exec-tests
on:
  push:

jobs:
  status-check:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v3

      - name: Use Node.js ${{ inputs.node-version }}
        uses: actions/setup-node@v3
        with:
          node-version: '16.x'

      - name: Get Cache Dependencies
        uses: actions/cache@v3
        with:
          path: ~/.npm
          key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
          restore-keys: |
            ${{ runner.os }}-node-

      - name: Install Dependencies
        run: npm ci

      - name: Create avif images dir
        run: mkdir tmp

      - name: Build
        run: npm run build
        env:
          NODE_OPTIONS: '--max_old_space_size=4096'

      - name: Check by linter
        run: npm run lint

      - name: Check by TypeScript Compiler
        run: npm run typecheck

      - name: Run Tests
        run: npm run test

リポジトリ(Web上から)の設定

以下の画面から編集 create-protection mainブランチの保護をするため、「main」と入力。
「Require status checks to pass before merging」にチェックを入れ、検索窓から「status-check」を入力、選択。
入力例1

ここまで設定できると、以下のような画面で表示できる。 動作例1

この設定だと警告が出るがマージはぽちぽちとクリックすればできてしまうので、「Do not allow bypassing the above settings」の設定もしておく。 設定例2

これでマージするにはコードの変更を余儀なくされる。 動作例2

余談

意図通りいかなかったこと

npm ci --ignore-scriptsコマンドを使って依存関係のインストールが爆速になるかと思ったら、ビルド時に画像フォーマットの変換に使っているsharpを対象に以下のエラーが出た。

Error:
Something went wrong installing the "sharp" module Cannot find module '../build/Release/sharp-linux-x64.node' Require stack: /home/runner/work/ikmnjrd.github.io/ikmnjrd.github.io/node_modules/sharp/lib/sharp.js

そのため、$ npm ciとした。

参考文献