Commit Graph

187 Commits

Author SHA1 Message Date
Daz DeBoer 3814d56740 Build outputs 2021-12-08 15:14:19 -07:00
Daz DeBoer 887e1a09ab Include original error in log messages 2021-12-08 14:44:57 -07:00
Daz DeBoer 574cf0ddce Build outputs 2021-12-08 14:05:13 -07:00
Daz DeBoer b88c4086b9 Don't overwrite title in build-scan notice 2021-12-08 13:07:52 -07:00
Daz DeBoer ddee3ca933 Update all outdated dependencies 2021-12-02 14:35:52 -07:00
Daz DeBoer 322805e800 Refactor: use a single .json file to describe all cached artifact bundles (#121)
This is a pure refactor, moving from a separate .cache file per bundle to a single cache-metadata.json file describing all bundles. Instead of storing cache metadata in a separate .cache file per artifact bundle, all of the metadata is now stored in a single `.json` file.

This will make it easier to implement more flexible artifact-caching strategies, such as caching each wrapper zip separately.

* Always include cache protocol version in cache key
* Store all cache metadata in a single JSON file
* Rename cache-metadata file and bump protocol version
* Polish and documentation
2021-11-28 10:19:56 -07:00
Daz DeBoer fdfc5bf12f Build outputs 2021-11-28 08:04:54 -07:00
Daz DeBoer 996094e8e8 Avoid failing job on any failure in post-action
Failures to store cache entries should not fail the action or the Job.
This fix attempts to catch and log any unexpected errors that occur when
saving cache entries.

Fixes: #119
Fixes: #120
2021-11-15 09:31:56 -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 4e899835b3 Avoid failing build on distributions cache errors
- Warn and continue on failure to restore a Gradle distribution from cache
- Warn and continue on failure to save a Gradle distribution to cache
- Extract common functionality for consistent handling of cache failures

Fixes #116
2021-11-05 07:01:48 -06:00
Daz DeBoer 717db318c1 Fix logging of cache key for Gradle User Home 2021-10-31 20:49:29 -06:00
Daz DeBoer 230fd6b47f Build outputs 2021-10-30 13:46:29 -06:00
Daz DeBoer 727b4612ba Fix early return from bundle processing 2021-10-30 12:11:59 -06:00
Daz DeBoer db6202adcd Build outputs 2021-10-30 06:29:25 -06:00
Daz DeBoer c031dc946b Build outputs 2021-10-27 16:09:53 -06:00
Daz DeBoer 39db90e99b Include build scan link in failure notice 2021-10-21 12:04:25 -06:00
Daz DeBoer b99e9f0bc3 Build outputs 2021-10-21 11:13:10 -06:00
Daz DeBoer a94b9252d5 Improve cache logging 2021-10-16 10:15:40 -06:00
Daz DeBoer 25672bf196 Build outputs 2021-10-16 09:50:40 -06:00
Daz DeBoer 263f84178a Prefix cache key with protocol version
This will ensure that incompatiblee cache entries generated by previous action releases
will not be used.
2021-10-16 08:33:42 -06:00
Daz DeBoer fe55bf4667 Build outputs 2021-10-15 14:56:44 -06:00
Daz DeBoer 7abf13ee48 Build outputs 2021-10-15 13:21:26 -06:00
Daz DeBoer e7b5fd0b28 Build outputs 2021-10-15 11:46:51 -06:00
Daz DeBoer 8ab7c9d8dd Do not fail action on cache errors
Ensure that we catch and log errors in `beforeSave` and `afterRestore`,
and do not fail the entire workflow in these cases.
2021-10-14 12:19:24 -06:00
Daz DeBoer 5328161026 Build outputs 2021-10-04 23:59:42 +02:00
Daz DeBoer 60b1ffac6b Fix build-scan-init script to work with build-in build-scan plugins 2021-09-29 14:39:48 -06:00
Daz DeBoer 0918f5f2a4 Rename source file for clarity 2021-09-28 00:04:50 -06:00
Daz DeBoer a7174b82a2 Use init script to capture build scan URL
Instead of parsing the log output, we instead register a
buildScanPublished listener and record the build scan URL
to a file. This file is subsequently read to report the
build scan URL.

Fixes #30
2021-09-28 00:04:41 -06:00
Daz DeBoer 1fb8644035 Build outputs 2021-09-27 21:53:19 -06:00
Daz DeBoer bebb162342 Usability improvements:
- Include bundle name in cache key
- Emit a few more messages at 'info'
2021-09-15 17:50:53 -06:00
Daz DeBoer 6084a4eb65 Cache artifacts with single entry per type
When caching is too fine-grained, an excessive number of cache
requests can result in HTTP 429 errors due to rate limiting.
By caching all artifacts of a particular type in a single entry
we hope to mitigate this, at the expense of some reduction in
cache space optimization.

This change also adds caching for all dependency jars, as well as
instrumented jars in the 'caches/jars-X' directory.
2021-09-15 17:45:47 -06:00
Daz DeBoer 9bfa003014 Build outputs 2021-09-14 18:11:31 -06:00
Daz DeBoer d06e19f862 Build outputs 2021-09-13 11:50:07 -06:00
Daz DeBoer cae99bf6d9 Tidy up cache entry de-duplication
- Rename feature to "common artifact caching"
- Cleanup logging
- Refactor/rename for clarity
2021-09-12 10:31:52 -06:00
Daz DeBoer 5a90152b1f Restore/cache deduplicated files in parallel 2021-09-12 10:31:52 -06:00
Daz DeBoer 4b92b8d013 Cache downloaded dependency jars separately
This will further remove common files out the the Gradle User Home
cache entries, reducing cache usage by removing redundancy.
2021-09-12 10:31:51 -06:00
Daz DeBoer 693293c29a Consolidate logic for separate artifact file caching
Making this functionality more general will make it easier to add other
artifacts to the set that we cache separately.
2021-09-12 10:31:51 -06:00
Daz DeBoer ac5d8920dd Cache generated-gradle-jars separately from Gradle User Home
Similar to wrapper distributions, these large files are common
to many Gradle User Home cache entries. Storing them separately removes
this redundancy from the Gradle User Home cache.
2021-09-12 10:31:51 -06:00
Daz DeBoer e833360307 Cache downloaded wrapper dists separately
In the current model, each cached Gradle User Home could contain
a copy of one or more downloaded wrapper distributions. This results
in large cache entries which could easily lead to premature eviction.

With this change, wrapper dists are cached separately from the rest
of the Gradle User Home directory. The artifact file is replaced by
a marker file which allows the action to restore the artifact from
cache when the Gradle user Home cache is restored.
2021-09-12 10:31:51 -06:00
Daz DeBoer 4032438d2b Build outputs 2021-09-07 16:26:37 -06:00
Daz DeBoer c79d4172e0 Build outputs 2021-08-27 12:53:01 -06:00
Daz DeBoer b3afdc78a7 Truncate Gradle args when constructing cache key (#71)
Cache keys have a hard limit of 512 characters, so we need to ensure that we don't generate a key longer than this.

- Remove excess whitespace
- Truncate to 400 characters

Fixes #70
2021-08-24 12:46:48 -06:00
Daz DeBoer e0c2736e35 Include Gradle invocation arguments in cache keys (#69)
This permits a new cache entry to be persisted when a subsequent Gradle invocation does more work that an earlier invocation.

Fixes #68
2021-08-22 17:11:05 -06:00
Daz DeBoer a63892c289 Log cache entry on save 2021-08-22 14:58:36 -06:00
Daz DeBoer c86093d76a Build distribution 2021-08-22 14:28:35 -06:00
Daz DeBoer 7336529ec5 Build distribution 2021-08-07 16:13:35 -07:00
Daz DeBoer bc4d6bddd4 Rebuild index files 2021-07-26 15:45:00 -06:00
Daz DeBoer 33e91b639d Cache Gradle distributions downloaded for a particular version (#58)
- Cache is separate from (but similar to) the wrapper distribution cache
- New 'distributions-cache-enabled' flag controls caching of all downloaded distributions
  (including wrapper distributions)
- Deprecated the 'wrapper-cache-enabled' flag for removal in v2
2021-07-08 12:22:48 -06:00
Daz DeBoer e4ec586f46 Only cache the wrapper ZIP, not the exploded dir
Prior to this change, the wrapper cache contained both the downloaded zip
file as well as the exploded wrapper dir. Only the zip file is required,
as Gradle will automatically detect and unpack.
2021-07-08 08:01:44 -06:00
Daz DeBoer 15a8123fbc Validate presense of gradle wrapper to provide better feedback
- Provide a more useful error message when no Gradle wrapper can be located,
  and 'gradle-version' or 'gradle-executable' is not used.
- Add test for case where wrapper is missing.
  This isn't really a "test" per-se, but this failing build invocation makes it
  easy to verify the GitHub action behaviour when the build is misconfigured.
2021-07-08 08:01:44 -06:00