1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

setup-node@v2でCache service responded with 400が出る

Posted at

はじめに

Next.js環境でfirebaseを使用したCD構築の際に、上記のエラーが出たので解決策をまとめました。

問題

GitHub Actions で自動で firebase```` にデプロイしようと、main.yml``` を作成しました。

main.yml

deploy:
name: Pushed deploy & test

on:
  push:
  workflow_dispatch:

jobs:
  build:
    name: build
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v2
      - name: Setup Node.js
        uses: actions/setup-node@v2
        with:
          node-version: "18"
      - name: Install dependencies
        run: npm install
      - name: Run build
        run: npm run build
    name: deploy
    runs-on: ubuntu-latest
    needs: build
    steps:
      - name: Checkout code
        uses: actions/checkout@v2
      - name: Setup Node.js and cache // エラー箇所 
        uses: actions/setup-node@v2 // ..
        with: // ..
          node-version: "18" // ..
          cache: "npm" // ..
      - name: Install firebase-tools
        run: npm install --save-dev firebase-tools
      - name: Decode Firebase service account key
        run: |
          echo "${{ secrets.FIREBASE_KEY }}" | base64 -d > ./firebase-key.json
          echo "GOOGLE_APPLICATION_CREDENTIALS=${{ github.workspace }}/firebase-key.json" >> $GITHUB_ENV
      - name: change space
        run: |
          ./node_modules/.bin/firebase use ${{ secrets.FIREBASE_PROJECT_ID }}
      - name: Deploy to Firebase Hosting
        run: |
          ./node_modules/.bin/firebase deploy
        env:
          FIREBASE_TOKEN: ${{ secrets.FIREBASE_TOKEN }}
          FIREBASE_CLI_EXPERIMENTS: webframeworks
      - name: delete GOOGLE_APPLICATION_CREDENTIALS
        run: rm $GOOGLE_APPLICATION_CREDENTIALS
        if: ${{ always() }}

上記のアクションで GiuHubpush すると、

Cache service responded with 400

というエラーが出る。

解決方法

setup-node@v2 ではなく setup-node@v4 を使用することでエラーは出なくなりました。
v4ではv2 のキャッシュエラーでアクションが失敗しないように修正されたようです。

v4でのキャッシュの変更点 actions/setup-node@v4は、内部的にactions/cache@v3以降のバージョンを使用しています。actions/cache@v3では、キャッシュの安定性が大幅に向上し、以下のような変更が加えられました。

堅牢なキャッシュキーの取り扱い: v3は、キャッシュキーの取り扱いをより堅牢にし、キャッシュキーの長さや文字に関する制限を緩和しました。これにより、複雑なキーでもエラーが発生しにくくなりました。

キャッシュの分割と統合: v3は、キャッシュのアップロードとダウンロードのプロセスを改善し、ネットワークの問題やキャッシュサービスの応答不良に対する耐性を高めました。

より信頼性の高いキャッシュサービス連携: キャッシュサービスのAPIとの通信方法が改善され、エラーの発生頻度が減少しました。

修正後の ```main.yml``` は以下です。
main.yml
name: Pushed deploy & test

on:
  push:
  workflow_dispatch:

jobs:
  build:
    name: build
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v4
      - name: Setup Node.js
        uses: actions/setup-node@v4
        with:
          node-version: "18"
      - name: Install dependencies
        run: npm install
      - name: Run build
        run: npm run build

  deploy:
    name: deploy
    runs-on: ubuntu-latest
    needs: build
    steps:
      - name: Checkout code
        uses: actions/checkout@v4
      - name: Setup Node.js and cache
        uses: actions/setup-node@v4
        with:
          node-version: "18"
          cache: "npm"
      - name: Install firebase-tools
        run: npm install --save-dev firebase-tools
      - name: Decode Firebase service account key
        run: |
          echo "${{ secrets.FIREBASE_KEY }}" | base64 -d > ./firebase-key.json
          echo "GOOGLE_APPLICATION_CREDENTIALS=${{ github.workspace }}/firebase-key.json" >> $GITHUB_ENV
      - name: change space
        run: |
          ./node_modules/.bin/firebase use ${{ secrets.FIREBASE_PROJECT_ID }}
      - name: Deploy to Firebase Hosting
        run: |
          ./node_modules/.bin/firebase deploy
        env:
          FIREBASE_TOKEN: ${{ secrets.FIREBASE_TOKEN }}
          FIREBASE_CLI_EXPERIMENTS: webframeworks
      - name: delete GOOGLE_APPLICATION_CREDENTIALS
        run: rm $GOOGLE_APPLICATION_CREDENTIALS
        if: ${{ always() }}

おわりに

バージョンをUP or DOWNさせることをまずは検討することが大事。

参考

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?