Commit Graph

35 Commits

Author SHA1 Message Date
Daz DeBoer 25ec178747 Add integration test for cache cleanup 2022-08-22 14:08:28 -06:00
Daz DeBoer 915123c493 Add experimental support for cache-cleanup
- Includes basic implementation as `CacheCleaner`
- Integration test that checks unused files are removed:
  - Downloaded dependencies
  - Local build cache entries
  - Wrapper distributions
2022-08-22 14:08:28 -06:00
Daz DeBoer 6965e8ed4c Only stop Gradle Daemons when saving Gradle User Home state
Fixes #341
2022-06-22 16:41:03 -06:00
Daz DeBoer 884bca012f Extracted some classes and refactored for clarity 2022-06-22 16:35:55 -06:00
Daz DeBoer 4fa0803854 Improve layout and formatting of Job Summary
- Move entire caching summary into details section
- Use core.summary.addTable for all table creation
- Include cache status in clickable description
2022-06-04 10:55:26 -06:00
Daz DeBoer 7b79b2a752 Report on read-only / write-only cache 2022-06-02 23:16:52 -06:00
Daz DeBoer a9a5bcf180 Move writing of cache report into job-summary.ts 2022-06-02 22:39:09 -06:00
Daz DeBoer 8f3c97e3f1 Extract action state-tracking out of caches.ts 2022-06-02 12:20:01 -06:00
Daz DeBoer 08d5b40ca5 Add experimental support for 'cache-write-only'
There may be cases where it a "fresh" cache entry would be beneficial,
for example if the Gradle User Home cache entry grows over time.

This setting would run the build as if no prior cache entry exists.
2022-01-20 15:04:11 -07:00
Daz DeBoer 7dee0f45c2 Fix check for pre-existing Gradle User Home 2022-01-17 14:44:32 -07:00
Daz DeBoer 50ca2bca83 Improve messages for cache-disabled scenario 2022-01-17 14:44:32 -07:00
Daz DeBoer 3aa7bfe163 Initialize pre-existing Gradle User Home 2022-01-17 14:44:32 -07:00
Daz DeBoer 06d64212d3 Initialize the Gradle User Home even when caching is disabled 2022-01-17 14:29:11 -07:00
Daz DeBoer 76ea8a76b2 Treat configuration-cache as an extracted entry
Instead of using a fallback strategy to locate a configuration-cache entry
based on the current job and git SHA, these entries are now keyed based on their
file content with the keys persisted in the primary Gradle User Home entry.

This removes the chance of having a configuration-cache entry restored that is
incompatible with the restored Gradle User Home state, and makes the logic easier
to understand.

This change involved a fairly major refactor, with the CacheEntryExtractor being
split out from the primary cache implementation, and adding a separate extractor
implementation for configuration-cache.
2021-12-30 16:03:02 -07:00
Daz DeBoer e1f84aa44d Restore/save configuration-cache data in first action
Previously, the action was restoring/saving the configuration-cache data for each
step that applied the action. In order to support Gradle invocations that are _not_
managed by the action, the configuration-cache restore is now performed in the initial
action step, and save is performed in the final post-action step.

The build root directories are recorded for each invocation via an init script.
2021-12-08 15:09:27 -07:00
Daz DeBoer 1041604f29 Ensure save/restore only on first action step
Instead of relying on the separate cache implementations to check for the
existence of cached products, we now explicitly track whether or not the execution
is the first time the action has been invoked for a job.
2021-12-08 15:09:27 -07:00
Daz DeBoer 253d6427fd Extract cache-reporting into separate file
Cache reporting is self-contained enough that it deserves some separation.
2021-12-08 15:09:26 -07:00
Daz DeBoer 45ef022607 Always initialize Gradle User Home with init script
The generated gradle.properties file and init script are not cached,
so need to be generated even when restoring from cache.
2021-11-27 20:45:49 -07:00
Daz DeBoer 4137be6a8b Minor improvement to logging in post-action
- Ensure that "Caching Gradle state" group always has 1 message
- Only print cache report when entries were restored or saved
2021-11-05 08:35:45 -06:00
Daz DeBoer 472ac8a356 Report sizes of cache entries
Using the patched version of @actions/cache, we now report the total
size of cache entries restored/saved, as well as details of each one.
2021-10-30 13:45:39 -06:00
Daz DeBoer 6ca4d4ade2 Improve formatting for caching report 2021-10-30 12:15:00 -06:00
Daz DeBoer 75cec40e58 Rename 'report' classes to 'listener'
- `CachingReport` -> `CacheListener`
- `CacheEntryReport` -> `CacheEntryListener`
2021-10-30 12:15:00 -06:00
Daz DeBoer c317ccac62 Refactor: extract cache-base out of cache-utils 2021-10-30 12:15:00 -06:00
Daz DeBoer a74bb0fad6 Monitor cache saves and add basic caching report
- Restore `CachingReport` instance in 'post' action
- Record keys for any entries saved
- Report caching activity as JSON in post action
2021-10-30 12:14:59 -06:00
Daz DeBoer 8ba5a0033b Track 'fully-restored' by tracking each cache restore
Instead of tracking a single 'fully-restored' flag, track the restore status of each
cache entry restore. If any of these are requested but not restored, then the overall
Gradle User Home cache is not fully restored.

Added special handling for the case when zero artifact bundles are set: this is used
in tests to simulate a not-fully-restored state.
2021-10-30 06:05:21 -06:00
Daz DeBoer 9edc2a11bd Only restore configuration-cache if Gradle Home is fully restored
Fixes #107
2021-10-29 09:34:36 -06:00
Daz DeBoer 063fc6a872 Allow source files to contain lines up to 120 characters
This avoids excessive line-feeds when reformatting code to 80 char lines.
2021-10-29 07:50:06 -06:00
Daz DeBoer a94b9252d5 Improve cache logging 2021-10-16 10:15:40 -06:00
Daz DeBoer cc5cdb7fe0 Adapt caching for GRADLE_USER_HOME env var
Fixes #74
2021-09-27 21:50:14 -06:00
Daz DeBoer 3390540145 Simplify setting caches to disabled or read-only 2021-09-13 11:04:42 -06:00
Daz DeBoer 378bd0b6f8 Save and restore caches in parallel 2021-09-07 15:17:39 -06:00
Daz DeBoer 6d1455a33e Tidy-up caching code
- Extracted common code for Gradle User Home and Project .gradle caches
  into abstract supertype.
- Improve error handling by checking error types
2021-09-07 15:17:39 -06:00
Daz DeBoer 4d37378696 Consolidate cache-enabled options 2021-09-05 21:38:33 -06:00
Daz DeBoer 0ecbac99f3 Group log messsages for restore/save cache 2021-09-03 11:34:22 -06:00
Daz DeBoer 5340f6e816 Add cache for project .gradle dir
- For now, this is limited to configuration-cache directory
2021-08-24 12:52:51 -06:00