🐱
GitHub Actionsでpnpmを使う
この記事を書くきっかけ
Playwrightは、pnpmによるインストール方法も公開しています。
試しに下記を実行すると、.github/workflows/playwright.yml
も自動で作成してくれました。初心者には優しくて、とてもありがたいです。
pnpm dlx create-playwright
ところが、この状態で出来上がったものをそのまま使おうとしたら、Error: Process completed with exit code 127.
が出て失敗してしまいました。
エラーの原因を調べてみて、対策が分かったので、記録として残すことにしました。
問題となったファイル
playwright.yml
name: Playwright Tests
on:
push:
branches: [ main, master ]
pull_request:
branches: [ main, master ]
jobs:
test:
timeout-minutes: 60
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: 16
- name: Install dependencies
run: pnpm install
- name: Install Playwright Browsers
run: pnpm exec playwright install --with-deps
- name: Run Playwright tests
run: pnpm exec playwright test
- uses: actions/upload-artifact@v3
if: always()
with:
name: playwright-report
path: playwright-report/
retention-days: 30
問題点
実行ログを確認してみると、pnpm: command not found
が確認できました。
つまり、コマンドとして認識されていない状態で、pnpm install
を実行していたようです。
解決
こちらのUsage exampleからコピペしてみたところ、無事に動きました。
playwright.yml
name: Playwright Tests
on:
push:
branches: [ main, master ]
pull_request:
branches: [ main, master ]
jobs:
test:
timeout-minutes: 60
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Install Node.js
uses: actions/setup-node@v3
with:
node-version: 16
+ - uses: pnpm/action-setup@v2
+ name: Install pnpm
+ id: pnpm-install
+ with:
+ version: 7
+ run_install: false
+ - name: Get pnpm store directory
+ id: pnpm-cache
+ shell: bash
+ run: |
+ echo "STORE_PATH=$(pnpm store path)" >> $GITHUB_OUTPUT
+ - uses: actions/cache@v3
+ name: Setup pnpm cache
+ with:
+ path: ${{ steps.pnpm-cache.outputs.STORE_PATH }}
+ key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
+ restore-keys: |
+ ${{ runner.os }}-pnpm-store-
- name: Install dependencies
run: pnpm install
- name: Install Playwright Browsers
run: pnpm exec playwright install --with-deps
- name: Run Playwright tests
run: pnpm exec playwright test
- uses: actions/upload-artifact@v3
if: always()
with:
name: playwright-report
path: playwright-report/
retention-days: 30
まとめ
pnpmを使いたいときは、pnpm/action-setup@v2
を忘れずに!
Discussion