Repository navigation
Issue: Cache service responded with 404 with actions/setup-node@v2 #1034
Description
Activity
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.- addedkind/feature-requestNew feature or requestNew feature or requestand removedkind/bugSomething isn't workingSomething isn't working
on Mar 15, 2022 See also this comment for a solution to disable cache in the
setup-xactions when running in act while still allowing cache on GitHub actions: #989 (comment)Ahh, I see. Thanks.
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: clientin
actwith a modified version of JEFuller's code written by me, conveniently named github-cache-server. 😊This also works great with
act's--artifact-server-pathif you're planning to use the artifact server as well.Cheers 🍻
Reacted by Markus Wolf, João Cerqueira, Avraham Ostreicher, Victor ADĂSCĂLIȚEI, hangedman and Pieter OliverWould it be possible to integrate this directly into act?
Would it be possible to integrate this directly into act?
I would have, but I don't speak GO 😔
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: clientin
actwith a modified version of JEFuller's code written by me, conveniently named github-cache-server. 😊This also works great with
act's--artifact-server-pathif you're planning to use the artifact server as well.Cheers 🍻
How do you set this up in your workflow file?
This is already fixed. The cache handler was rewritten in #1770 (April 2023) by @wolfogre — see
pkg/artifactcache/handler.gofind()function which now returns HTTP 204 (No Content) when no cache entry matches, instead of 404.The relevant test is
TestHandler/get_not existinpkg/artifactcache/handler_test.go:t.Run("get not exist", func(t *testing.T) { key := strings.ToLower(t.Name()) version := "c19da02a2bd7e77277f1ac29ab45c09b7d46a4ee758284e26bb3045ad11d9d20" resp, err := http.Get(fmt.Sprintf("%s/cache?keys=%s&version=%s", base, key, version)) require.NoError(t, err) require.Equal(t, 204, resp.StatusCode) })
Verified locally on current master (4f41128).
actions/setup-node@v4withcache: 'npm'works against act's local cache server.Suggesting closure as already-resolved.
Reacted by Jason Song

(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 withcache: 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: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=b3f0cb83629d634645a5146420c017462ebb5229bd60271a7a86e489a6066469and 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)