Commit Graph
161 Commits
Author SHA1 Message Date
qmuntal 90977320aa test(cache): align tar concurrency test filename 2026-09-17 15:36:35 +02:00
qmuntal da266fa6fd fix(cache): isolate Windows BSD tar temporary files
Run Windows BSD tar/zstd extraction and listing in private temporary
directories. Concurrent operations previously overwrote cache.tar in the
process working directory and could extract the wrong archive without
reporting an error. Debug listings during cache saves have the same race.

Resolve and quote archive and workspace paths before changing the child
working directory, and remove scratch files on success and failure.
Leave GNU tar, gzip, and the cache archive format unchanged.

Add deterministic regression tests for concurrent reads, relative paths
with spaces, and cleanup after failures in either subprocess.
2026-09-17 15:27:15 +02:00
Philip GaiandCopilot Autofix powered by AI 8d05a01e45 feat(cache): add cache-mode client behavior (read-denied warning + ACTIONS_CACHE_MODE skip) (#2447)
* feat(cache): surface cache read-denied as a distinct restore warning

Mirror the existing cache write-denied handling on the restore path. When
the receiver refuses a download URL because the run's token has no readable
cache scopes, it returns a twirp PermissionDenied (HTTP 403). The twirp
client wraps that 403 in a generic Error, so the stable 'cache read denied:'
prefix is embedded in the message rather than at the start.

- Add CACHE_READ_DENIED_PREFIX and CacheReadDeniedError
- Dispatch on the prefix in the restoreCacheV2 catch block (V2 only), log a
  policy-specific warning, and report a cache miss so the run continues
- Add a test mirroring the write-denied coverage

* chore(cache): trim comments, bump to 6.2.0, add RELEASES entry

* refactor(cache): dispatch read-denied by error name to mirror write path

Re-throw CacheReadDeniedError from an inner try/catch around
GetCacheEntryDownloadURL and dispatch on typedError.name in the outer catch,
matching how saveCacheV2 handles CacheWriteDeniedError.

* feat(cache): handle read-denied on the v1 restore path

Extend the read-denied handling to Cache Service v1 so GHES (which forces v1
via _apis/artifactcache) is covered when read-scope enforcement ships there.

- Surface the receiver's error body message from getCacheEntry instead of a
  generic status-code error, so the cache read denied: prefix reaches callers
- Re-throw CacheReadDeniedError from restoreCacheV1 and dispatch on it in the
  outer catch, mirroring restoreCacheV2 and the write-denied v1 handling
- Add a v1 read-denied test

* refactor(cache): only surface receiver body for read-denied on v1

* test(cache): assert getCacheEntry only surfaces body for read-denied

* test(cache): cover non-read-denied getCacheEntry passthrough on v1

* refactor(cache): share read-denied prefix via constants to avoid drift

* feat(cache): skip restore/save per ACTIONS_CACHE_MODE

* test(cache): expand ACTIONS_CACHE_MODE skip coverage across v1/v2 and unknown modes

* fix copilot pr feedback

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

* docs(cache): remove internal reference from cache-mode comment

* test(cache): merge redundant cache-mode skip tests and simplify read-denied handling

Address PR review feedback:
- Merge the duplicate restore/save skip test.each blocks into single blocks parametrized over ACTIONS_CACHE_SERVICE_V2.
- Drop the redundant CacheReadDeniedError catch arms; the typed error is not an HttpClientError so it already falls through to a non-fatal warning.
- Clarify why read-denied classification happens both in getCacheEntry and cache.ts (dependency-free internal module cannot import the typed error).

* refactor(cache): drop redundant CacheWriteDeniedError catch arms

Mirror the read-denied simplification on the save path. CacheWriteDeniedError
is not an HttpClientError and its name does not match the ReserveCacheError
arm, so it falls through to the same non-fatal warning. Logging behavior is
unchanged (warns, never fails the run) and the exported type is still thrown
internally for consumers and tests. Also refresh stale doc wording.

* test(cache): collapse redundant restore getCacheEntry-failure tests

The two restoreCache tests exercised the identical warning + cache-miss path
now that read-denied is no longer reclassified in the catch, so merge them into
one. The read-denied prefix detection that actually branches on the message is
covered by getCacheEntry tests in cacheHttpClient.test.ts.

---------

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-07-13 10:03:16 -05:00
Jason Ginchereau 66801604fb Adit fix, address copilot comments 2026-06-11 17:17:55 -07:00
Jason Ginchereau c99fedd87a Handle cache write error due to read-only token 2026-06-11 17:02:12 -07:00
Daniel Kennedy f0055b449b @actions/cache: convert to an ESM module (#2275)
* `@actions/cache`: convert to an ESM module

* Update the fixture to ESM syntax

* Update the cache workflows

* Bump `@actions/glob` to `0.6.1`

* Fix awaiting in the cache unit tests

* Fix a type issues in contracts

* Export the `DownloadOptions`/`UploadOptions` like before

* More cache test fixes

* Make the cache units tests better

* Add some more logging

* Add retries to restore-cache.mjs
2026-01-29 14:23:32 -05:00
Ryan Ghadimi 9dc746ecd2 tests & releases 2026-01-16 09:44:57 +00:00
Salman Muin Kayser Chishti bb06c8e35a fix(cache): replace @azure/ms-rest-js with @azure/core-rest-pipeline
Remove abandoned @azure/ms-rest-js dependency which pulls in node-fetch@v2, causing punycode deprecation warnings on Node.js 24+.

The TransferProgressEvent type is now imported from @azure/core-rest-pipeline instead.
2025-12-10 11:23:06 +00:00
Ryan Ghadimi e518261d5f no need to resolve 2025-10-15 16:23:02 +01:00
Ryan Ghadimi 5b9a70063d lint 2025-10-15 16:23:02 +01:00
Ryan Ghadimi 89d5600fb7 new error state, tests to cover 2025-10-15 16:23:02 +01:00
Ryan Ghadimi 2a75926faf remove cache size limit 2025-10-15 16:23:02 +01:00
Salman Muin Kayser Chishti 5facceabcc linting 2025-09-04 15:24:57 +01:00
Salman Muin Kayser Chishti 194748dabb package updates 2025-09-04 15:15:02 +01:00
Salman Muin Kayser Chishti fff3a02570 Merge branch 'main' into salmanmkc/node24 2025-08-08 03:54:30 +01:00
Bassem Dghaidi da5f546157 Fix linter complaints 2025-08-07 03:49:51 -07:00
Salman Muin Kayser Chishti 7533af2e97 updates 2025-07-31 23:48:44 +01:00
Bassem Dghaidi 23733c502e Merge pull request #2100 from actions/copilot/fix-2099
Improve cache service availability determination and implement conditional error logging
2025-07-28 16:49:10 +02:00
copilot-swe-agent[bot]andLink- 780c52920e Fix v1 cache service to only check ACTIONS_CACHE_URL
Co-authored-by: Link- <568794+Link-@users.noreply.github.com>
2025-07-14 13:39:13 +00:00
copilot-swe-agent[bot]andLink- c0e1707545 Restore server error test and confirm logCacheError function removal
Co-authored-by: Link- <568794+Link-@users.noreply.github.com>
2025-07-14 13:01:02 +00:00
copilot-swe-agent[bot]andLink- 098b391e92 Complete PR feedback implementation: all cache tests passing
Co-authored-by: Link- <568794+Link-@users.noreply.github.com>
2025-07-14 12:26:40 +00:00
copilot-swe-agent[bot]andLink- 768c09e245 Implement 5xx server error detection and fix most cache tests
Co-authored-by: Link- <568794+Link-@users.noreply.github.com>
2025-07-14 12:23:44 +00:00
copilot-swe-agent[bot]andLink- 0632db1508 Update tests to expect warnings instead of errors for non-5xx cache failures
Co-authored-by: Link- <568794+Link-@users.noreply.github.com>
2025-07-14 12:07:37 +00:00
Bassem Dghaidi 355b96f648 Fix linting issues 2025-07-14 03:49:28 -07:00
Bassem Dghaidi 50df04cfa4 Fix logging of cache key and restore key matches 2025-07-14 03:45:17 -07:00
copilot-swe-agent[bot]andLink- 4b4a56d5f7 Fix tests to expect errors instead of warnings for cache failures
- Update restoreCacheV2.test.ts, restoreCache.test.ts, saveCacheV2.test.ts, and saveCache.test.ts
- Change test expectations from core.warning to core.error for cache operation failures
- All tests now pass successfully

Co-authored-by: Link- <568794+Link-@users.noreply.github.com>
2025-07-14 10:38:47 +00:00
copilot-swe-agent[bot]andLink- 6c9465b976 Improve cache service availability determination and change warnings to errors
- Update isFeatureAvailable() to leverage ACTIONS_CACHE_SERVICE_V2 feature flag
- For v2: check ACTIONS_RESULTS_URL availability
- For v1: check either ACTIONS_CACHE_URL or ACTIONS_RESULTS_URL availability
- Change warning logs to error logs for cache failures
- Add comprehensive tests covering all scenarios

Co-authored-by: Link- <568794+Link-@users.noreply.github.com>
2025-07-14 10:32:34 +00:00
Ryan Ghadimi 62997f4a4a alphabetically order them 2025-05-07 08:31:17 +00:00
Ryan Ghadimi fee58efe37 maybe this works instead 2025-05-06 20:22:05 +00:00
Ryan Ghadimi 7e000b8182 don't need that maybe 2025-05-06 20:08:50 +00:00
Ryan Ghadimi 61892208ae change url 2025-05-06 20:02:27 +00:00
Ryan Ghadimi 233b58ff4c add env variable for cache tests 2025-05-06 19:50:44 +00:00
JoannaaKL 4d0dc6ece5 Merge pull request #1994 from gitulisca-enterprise-cloud-testing/gitulisca/log-restore-request-version
Log cache version requested on debugging message
2025-03-17 17:58:16 +01:00
Art Leo 54ac8fc2b0 Log cache version requested 2025-03-15 10:13:43 +11:00
Salman Chishti 2e7002485c add encoding back with extra tests 2025-03-14 06:38:57 -07:00
Salman Chishti fb3958ba44 update ts docs 2025-03-13 04:47:49 -07:00
Salman Chishti b55f609ced PR feedback, back to simplified approach, no export on client as well 2025-03-13 04:23:45 -07:00
Salman Chishti c7ec9af3af Mask different situations, malformed URL, encoded, decoded, raw signatures, nested parameters, and moved to a utility file 2025-03-12 03:17:35 -07:00
Salman Chishti cd186258e8 masks the whole URL, update tests 2025-03-10 06:47:52 -07:00
Salman Chishti 00d0e25088 Instead of using utility method in core lib, use method in both twirp clients 2025-03-07 06:01:25 -08:00
Salman Chishti 0ba281d011 remove these changes 2025-03-06 14:31:21 -08:00
Salman Chishti 10e284a34d Add secret and signature masking for cache and artifact packages 2025-03-06 14:25:32 -08:00
Rob Herley c6b0a26648 cache: wrap create failures in ReserveCacheError 2025-02-25 12:49:08 -05:00
Rob Herley 516a802ae7 update mocks 2025-02-14 09:42:41 -05:00
Rob Herley 61f222d41c remove runtime dependency on twirp-ts 2025-01-27 17:52:55 +00:00
Bassem Dghaidi e51a94a67c Tune upload options 2024-12-02 07:32:33 -08:00
Bassem Dghaidi 19a33d23ef Fix linter complaints 2024-12-02 04:24:17 -08:00
Bassem Dghaidi fef5a9d9e5 Fix tests 2024-12-02 04:18:46 -08:00
Bassem Dghaidi f51d6a5578 Troubleshoot 2024-12-02 03:35:20 -08:00
Bassem Dghaidi b12049ae0c Add progress tracking for blob uploads 2024-12-02 02:33:27 -08:00