vercel / turborepo

Build system optimized for JavaScript and TypeScript, written in Rust
https://turbo.build/repo/docs
MIT License
26.21k stars 1.81k forks source link

[turborepo] Remote caching does not work on `workflow_call` event in github actions #2967

Open marcofugaro opened 1 year ago

marcofugaro commented 1 year ago

What version of Turborepo are you using?

1.6.3

What package manager are you using / does the bug impact?

Yarn v2/v3 (node_modules linker only)

What operating system are you using?

Mac

Describe the Bug

When enabling remote caching on github actions as explained in the official guide, the remote caching is disabled when using the workflow_call event.

image

The workflow_call event, is used if you want to concatenate workflows, like this for example.

image

It is better explained in the reusing workflows section of the github actions guide.

Expected Behavior

Remote caching should work in workflow_call events.

To Reproduce

# .github/workflows/build.yml

name: Build

on:
  workflow_call:

jobs:
  build:
    runs-on: ubuntu-latest
    env:
      TURBO_TOKEN: ${{ secrets. TURBO_TOKEN }}
      TURBO_TEAM: ${{ secrets. TURBO_TEAM }}

    steps:
      - name: Check out code
        uses: actions/checkout@v3

      - name: Use latest node
        uses: actions/setup-node@v3
        with:
          node-version: 16
          cache: 'yarn'

      - name: Install dependencies
        run: yarn install --immutable

      # remote caching does not work here... but it should
      - name: Build
        run: yarn build

      - name: Upload artifact
        uses: actions/upload-artifact@v3
        with:
          name: my-app
          path: ./apps/my-app/dist/
# .github/workflows/deploy.yml

name: Deploy 

on:
  push:
    branches:
      - main

jobs:
  build:
    uses: ./.github/workflows/build.yml

  deploy:
    runs-on: ubuntu-latest
    needs: build
    steps:
      - name: Download artifact
        uses: actions/download-artifact@v3
        with:
          name: my-app
          path: ./

      - name: Display downloaded files
        run: ls -R ./

      - name: Deploy 
        # ...

Reproduction Repo

No response

WANZARGEN commented 1 year ago

Same here too..

# review for PRs
name: Review

on:
  pull_request:
    branches:
      - master

jobs:
  review:
    runs-on: ubuntu-latest
    env:
      TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }}
      TURBO_TEAM: ${{ secrets.TURBO_TEAM }}

    steps:
      - uses: actions/checkout@v3
        with:
          submodules: true

      - name: Setup Node.js
        uses: actions/setup-node@v3
        with:
          node-version: '16'
          cache: 'npm'

      - name: Install dependencies
        run: npm install

      - name: Build
        run: |
          npm run build

I changed build command as below, but it does not work too.

npm run build --team=$TURBO_TEAM --token=$TURBO_TOKEN
andresgutgon commented 1 year ago

I think is happening the same to me. I see turbo cache working on Vercel deploy but on GitHub action I see:

Remote caching disabled
cw-ddedakiya commented 11 months ago

@marcofugaro @WANZARGEN @andresgutgon you are get any solution for miss caching issue ??

WANZARGEN commented 11 months ago

@marcofugaro @WANZARGEN @andresgutgon you are get any solution for miss caching issue ??

No.. 😢

andresgutgon commented 11 months ago

Not using turbo repo these days sorry

oxxxxxy commented 11 months ago

hi, guys, i have same issue, i guess. :rofl:

So what did you do with that problem?

oxxxxxy commented 11 months ago

oh, sorry, it is not turbo issue.

pauledwards241 commented 4 months ago

If it helps, I hit the same issue this week with our reusable workflow, but realised that secrets need to be passed from the calling workflow to the called workflow. This fixed the issue for me.

marcofugaro commented 4 months ago

@pauledwards241 good find! if this is the required solution, I would like to see it mentioned at least in the official Vercel guide, then we can close this issue.

pauledwards241 commented 4 months ago

I don't necessarily feel this is a Vercel issue. In my case it was a misunderstanding on how secrets and contexts work in GitHub reusable workflows. It does list this issue in the reusable workflow limitations.

However, It would have been nice to have slightly more detailed output from TurboRepo e.g. Missing TURBO_TOKEN (or something similar), as it was quite difficult to debug.

marjorg commented 1 week ago

I noticed something similar in our actions, after doing turbo prune @some/app remote caching was no longer working even with TURBO_TOKEN present. We host our own cache and have committed .turbo/config.json containing teamId and apiUrl to Git. this file was not being included in the pruned output, simply copying the file into the pruned output fixed this issue for me.