Retain Specific Caches #89
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Copyright (C) 2023 and later: Unicode, Inc. and others. | |
# License & terms of use: http://www.unicode.org/copyright.html | |
# | |
# This workflow is designed to keep specific caches on the main | |
# branch from getting evicted according to the Github Actions policy | |
# (currently in 2023: 7 days) in cases where the cost to construct | |
# the cache is high, especially in cases where there is flakiness | |
# (ex: network loss / throttling when downloading artifacts) involved in | |
# constructing the cache. | |
# | |
# Preventing a cache from eviction using this workflow requires that: | |
# - the cache is not too big that it starves other caches | |
# from using the shared cache quota for the repository | |
# - the cache key is specific enough to avoid cache collisions, according | |
# to good cache key design | |
# - the cache key is not overly specific to cause unnecessary cache misses | |
# (resulting in duplicate caches values, thereby wasting space), according | |
# to good cache key design | |
# - For more details, see: https://docs.github.com/en/actions/using-workflows/caching-dependencies-to-speed-up-workflows | |
name: Retain Specific Caches | |
on: | |
schedule: | |
# Because the Github Actions cache eviction policy is every 7 days, | |
# this cron schedule is set to run every 6 days to ensure retention | |
- cron: '0 12 */6 * *' | |
jobs: | |
retain-maven-cache: | |
name: Run all tests with Maven | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout and setup | |
uses: actions/checkout@v2 | |
- name: Set up JDK 11 | |
uses: actions/setup-java@v1 | |
with: | |
java-version: 11 | |
- name: Cache local Maven repository | |
uses: actions/cache@v2 | |
with: | |
path: ~/.m2/repository | |
key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} | |
restore-keys: | | |
${{ runner.os }}-maven- | |
- name: Set up out-of-source output dir | |
run: | | |
mkdir -p unicodetools/mine/Generated/BIN | |
# Omitting running any build instructions. | |
# | |
# The point is to touch the cache before the TTL causes it to get evicted. | |
# For Github Actions, the cache is preserved only when the cache action is | |
# invoked and the job completes successfully. | |
# | |
# It seems sufficient for the CI job here to finish successfully by | |
# trivially running nothing. |