cloudflare / wrangler-action

🧙‍♀️ easily deploy cloudflare workers applications using wrangler and github actions
Apache License 2.0
1.25k stars 159 forks source link

D1 migrations in CI fail silently #221

Open davwheat opened 11 months ago

davwheat commented 11 months ago

I have no idea if this is a me problem like some misconfiguration I've made, but I can't work this out for the life of me.

Excerpt from my workflow:

      - name: Deploy worker
        uses: cloudflare/wrangler-action@v3
        with:
          apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
          workingDirectory: 'cf-workers'

      - name: Run D1 migrations
        uses: cloudflare/wrangler-action@v3
        with:
          apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
          workingDirectory: 'cf-workers'
          command: d1 migrations apply rail-announcements

Deploying the worker is fine, but the migrations command returns error code 1 with no useful log output:

🚀 Running Wrangler Commands
  /usr/local/bin/yarn wrangler d1 migrations apply rail-announcements
Error: The process '/usr/local/bin/yarn' failed with exit code 1
Error: 🚨 Action failed

Running it locally works fine, with the CLI output I'd expect:

ubuntu@David-PC:~/rail-announcements/cf-workers$ yarn wrangler d1 migrations apply rail-announcements
✅ No migrations to apply!

Any ideas what I might be doing wrong?

1000hz commented 11 months ago

Sorry for the trouble here. It sounds like you're running into https://github.com/cloudflare/workers-sdk/issues/4078. Your API token doesn't have edit permissions for D1 so you're getting an auth error, but that wrangler d1 command doesn't properly log an error. This should be fixed in wrangler soon via https://github.com/cloudflare/workers-sdk/pull/4597.

davwheat commented 11 months ago

Ahh, spot on! Thanks so much. :)

vladinator1000 commented 7 months ago

This also fails silently for me on wrangler 3.51.2 image

      - name: 🕊️ Migrate 
        uses: cloudflare/wrangler-action@v3
        with:
          apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
          accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
          wranglerVersion: "3.51.2"
          command: d1 migrations apply yupty-staging --remote --env staging

Fix

compeek commented 3 weeks ago

This also fails silently for me on wrangler 3.51.2 image

      - name: 🕊️ Migrate 
        uses: cloudflare/wrangler-action@v3
        with:
          apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
          accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
          wranglerVersion: "3.51.2"
          command: d1 migrations apply yupty-staging --remote --env staging

Fix

Thank you, adding the D1 edit permission fixed it for me on 3.83.0 as well with wrangler d1 migrations apply. I've been dealing with this for months. It makes sense now, but the lack of any error message was very frustrating.

jakst commented 17 hours ago

@1000hz this is still happening on wrangler 3.87.0. No error message whatsoever.

image