Commit Graph

195 Commits

Author SHA1 Message Date
Daz DeBoer f3e4903860 Check that job summary support is available
Fixes #319
2022-06-09 09:26:30 -06:00
Daz DeBoer 93c31ca3b5 Don't fail if the file-to-delete no longer exists
Fixes #308
2022-06-06 15:35:57 -06:00
Daz DeBoer 7a15005377 Avoid printing "reason unknown" for extract entries
This was happening when the main Gradle User Home entry was not saved due to
having an unchanged cache key.

Fixes #309
2022-06-06 15:07:13 -06:00
Daz DeBoer 8096e65e0a Better error reporting when file deletion fails
- Include file name in all logging
- Log inital attempts at debug to avoid noise
- Include output of 'jps -lm' when final attempt fails
2022-06-06 11:52:46 -06:00
Daz DeBoer 9cd70b5460 Report cache entry path for duplicate entry save 2022-06-06 08:48:03 -06:00
Daz DeBoer 63bcd47c1b Allow Job Summary generation to be disabled 2022-06-06 07:13:23 -06:00
Daz DeBoer 213bb63776 Use java to determine user.home dir
Although convenient, the os.homedir() function can return a different value
that the 'user.home' SystemProperty in Java. The latter is used to locate
the Gradle User Home directory.

By switching to use Java to determine the value for 'user.home', we can use
the same process as Gradle to determine Gradle User Home.

Fixes #207
2022-06-05 22:13:36 -06:00
Daz DeBoer 0b5047ec4d Prevent duplicate JSON being written to build-results 2022-06-05 21:55:11 -06:00
Daz DeBoer 52ebf2721a Allow daemons to run across workflow steps
Now that we are stopping all Gradle daemons in the post-job action,
we can allow daemon processes to be re-used across steps in a workflow job.

Fixes #113
2022-06-05 09:20:54 -06:00
Daz DeBoer aea6ddad5b Attempt to stop all daemons on Job completion 2022-06-05 09:07:34 -06:00
Daz DeBoer e644288a42 Use build-results file for root project dirs
Instead of using a separate mechanism and init script, reuse the information
captured in the build-results file.
2022-06-05 08:34:07 -06:00
Daz DeBoer e234151ec9 Add more information to captured build results
- Root project dir: will allow us to replace project-root-capture init script
- Gradle home dir: will allow us to stop all started daemons
2022-06-05 08:18:25 -06:00
Daz DeBoer 3f2d9cde44 Capture build results when GE plugin is applied but no build-scan is published 2022-06-05 00:32:29 -06:00
Daz DeBoer 6001bc9edc Improve build badgee for builds without scan links 2022-06-05 00:32:00 -06:00
Daz DeBoer 5203a0b09d Capture build results when config-cache is enabled
When enabled, the configuration-cache will cause the build to fail when a
`buildFinished` listener is added. Instead, use a BuildService to listen for task
failures and to write the results on build completion.
2022-06-05 00:29:42 -06:00
Daz DeBoer 500607bc35 Capture build-results without build-scan publication
The `buildScanPublished` is only called when a build scan is published by the build.
Support other invocations by adding a `buildFinished` listener.
2022-06-05 00:28:24 -06:00
Daz DeBoer 748dc30fdc Support and test Gradle 3.5.1
Fix build-scan-capture.init.gradle so that it applies to versions 3.+,
and include this version in test coverage.
2022-06-05 00:26:21 -06:00
Daz DeBoer ece69c52b2 Save project-root-list in RUNNER_TEMP dir
This feels better than saving in Gradle User Home and is consistent
with where the build results are written.
2022-06-05 00:24:57 -06:00
Daz DeBoer b02f4f1968 Disable cache-read-only when cache-write-only is set 2022-06-04 11:28:12 -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 dff0fe1b20 Remove debug output from init script 2022-06-03 13:51:36 -06:00
Daz DeBoer ae74c01440 Use a BuildService to always collect project root
Using `settingsEvaluated` meant that the project root was not recorded
when the build was run with a config-cache hit. This meant that the subsequent
build would not restore the config-cache, resulting in a cache miss.

In order to avoid issues running the init script on older versions of Gradle
the project-collection is extracted into a separate groovy file that is only
applied conditionally on Gradle 7 or higher.
2022-06-03 13:51:36 -06:00
Daz DeBoer cde0632795 Update comment for accuracy 2022-06-03 07:50:08 -06:00
Daz DeBoer 6cc033f2b3 Make build-result-capture script compatible with config-cache 2022-06-03 07:12:23 -06:00
Daz DeBoer 7b79b2a752 Report on read-only / write-only cache 2022-06-02 23:16:52 -06:00
Daz DeBoer 143774290e Add more details to cache summary report 2022-06-02 22:39:55 -06:00
Daz DeBoer a9a5bcf180 Move writing of cache report into job-summary.ts 2022-06-02 22:39:09 -06:00
Daz DeBoer f9c8fcf79f Adding caching details to Job Summary 2022-06-02 14:21:10 -06:00
Daz DeBoer 86e82987ba Write job summary in post action
- Save build results in file encoded as JSON
- Read all build results in post action and render as table in job summary
2022-06-02 12:58:49 -06:00
Daz DeBoer 8f3c97e3f1 Extract action state-tracking out of caches.ts 2022-06-02 12:20:01 -06:00
Daz DeBoer d95713bd5d Extract init scripts into resource files 2022-06-02 11:53:33 -06:00
Daz DeBoer 28b774ebdb Allow override of sections of cache key
These internal env vars are designed primarily for testing,
but may also prove useful for folks to experiment with more optimal
caching setups.
2022-05-29 09:32:24 -06:00
Daz DeBoer be62f7d934 Merge branch 'releases/v2.1'
* releases/v2.1:
  Build outputs
  Remove downloaded wrapper zips before caching
  Fix typo in worklow step
2022-05-29 09:23:36 -06:00
Daz DeBoer f2bb19b43a Remove downloaded wrapper zips before caching
The wrapper zip files are redundant, and not required after extraction.
Gradle 7.5+ will delete these automatically, but we delete them for older
versions to avoid caching the wrapper distributions twice.

Sinc the `gradle-home-cache-excludes` parameter does not support
wildcards, we remove them explicitly.
2022-05-29 08:49:36 -06:00
Daz DeBoer 7645e6e536 Replace emoji characters with markdown 2022-05-24 16:37:15 +02:00
Daz DeBoer 646074d659 Write build scan link to GHA job summary
The new Job Summary functionality permits better rendering of build
results, including clickable build scan links
2022-05-24 15:01:44 +02:00
Daz DeBoer d63db6a05e Remove unclickable buildScan link from failure
Build scan links will be rendered in GHA Job Summary.
2022-05-24 15:01:08 +02:00
Daz DeBoer 0e24fa1975 Save/restore exploded Gradle dist rather than zip
To save space, future versions of Gradle are likely to delete the downloaded distribution
after extracting it. See gradle/gradle#3605 and gradle/gradle#19495.
To cater for this we will now save/restore the extracted distribution rather than the
downloaded zip file.
2022-04-04 21:43:31 -06:00
Daz DeBoer 0d13054264 Log stack trace for cache errors 2022-03-18 13:56:40 -06:00
Daz DeBoer 53e57a851c Make Gradle Home detection compatible with MacOS
MacOS runners are initialized with a Gradle User Home directory including
the `~/.gradle/notifications` directory. This was causing the action to skip
restoring the Gradle User Home on MacOS.

This fix limits the pre-existing GUH check to the `~/.gradle/caches` directory
which isn't pre-initialized in the runner.

Fixes #155
2022-02-03 09:46:37 -07:00
Daz DeBoer 702bb97ecb Do not overwrite existing gradle.properties 2022-01-24 15:18:11 -07:00
Daz DeBoer f75a3e8436 Make build-scan notice a WARNING for failed builds 2022-01-21 08:09:32 -07:00
Daz DeBoer c349fa5b1f Do not hide ReserveCacheError failures
When the target entry already exists, we are unable to save. Ensuring this situation
is logged helps make the logs more understandable.
2022-01-21 08:08:32 -07: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 0a5ede19a9 Improve cache-reporting when entry already exists 2022-01-20 15:04:11 -07:00
Daz DeBoer a23ac1d61c Add experimental support for 'strict-match' caching
By default, the action will attempt to restore a Gradle User Home
cache entry from a different set of matrix inputs (or a different Job entirely)
if an existing entry is not found for the current Job (including matrix inputs).

By specifying the experimental `gradle-home-cache-strict-match` parameter, a user
can avoid this fuzzy matching and ensure that a job execution starts with an
empty Gradle User Home if no entry from a prior execution is found.
2022-01-20 15:03:54 -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