act icon indicating copy to clipboard operation
act copied to clipboard

Issue: Cache service responded with 404 with actions/setup-node@v2

Open aib opened this issue 3 years ago • 4 comments
trafficstars

(I'm skipping the issue template since this looks more like an oversight or missing feature than a bug.)

actions/setup-node@v2, when run with cache: npm, fails with "::error::Cache service responded with 404".

To replicate, one can clone https://github.com/aib/act-setup-node-test and run act --artifact-server-path /tmp/act-artifacts -j test. Edit: Or use the following workflow file:

name: Test
jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - uses: actions/setup-node@v2
        with:
          node-version: 16.14.0
          cache: 'npm'
      - run: npm --version

Tested against release v0.2.25 and current master.

The requested URL looks like http://127.0.0.1:34567/_apis/artifactcache/cache?keys=node-cache-Linux-npm-4ae58fb93f5d99af5b6b62d6ba7d42110a267626bfc1d6847922d9e6863ef729&version=b3f0cb83629d634645a5146420c017462ebb5229bd60271a7a86e489a6066469 and seems to be generated by https://github.com/actions/toolkit/blob/main/packages/cache/src/internal/cacheHttpClient.ts#L33 .

A workaround is returning HTTP 204 to the request. An actual caching implementation should be easy, too, but I'm not familiar enough with act, GitHub Actions or even Go to submit a PR. (And in any case I'd need an issue # to reference)

aib avatar Mar 11 '22 10:03 aib

Hi @aib, the asset server implementation in act currently does not support the github caching API. It only supports the artifact upload/download from jobs.

KnisterPeter avatar Mar 15 '22 08:03 KnisterPeter

See also this comment for a solution to disable cache in the setup-x actions when running in act while still allowing cache on GitHub actions: https://github.com/nektos/act/issues/989#issuecomment-1059758786

ZauberNerd avatar Mar 15 '22 08:03 ZauberNerd

Ahh, I see. Thanks.

aib avatar Mar 15 '22 08:03 aib

Hey guys! I was able to use

    - name: Bringing node v16
      uses: actions/setup-node@v3
      with:
        node-version: 16
        cache: 'npm'
        cache-dependency-path: client

in act with a modified version of JEFuller's code written by me, conveniently named github-cache-server. 😊

image

This also works great with act's --artifact-server-path if you're planning to use the artifact server as well.

Cheers 🍻

3Nigma avatar Oct 04 '22 15:10 3Nigma

Would it be possible to integrate this directly into act?

iSplasher avatar Mar 26 '23 19:03 iSplasher

Would it be possible to integrate this directly into act?

I would have, but I don't speak GO 😔

3Nigma avatar Mar 27 '23 06:03 3Nigma