Turn cache expiration time into a variable#20058
Merged
Merged
Conversation
seanbudd
commented
May 6, 2026
Contributor
There was a problem hiding this comment.
Pull request overview
This PR makes the cache expiration threshold in the “Clear caches” GitHub Actions workflow configurable via a repository variable (with an optional workflow dispatch override), instead of being effectively fixed at 6 hours.
Changes:
- Allow
CACHE_EXPIRATION_HOURto be sourced fromvars.CACHE_EXPIRATION_HOURwhen no dispatch input is provided. - Adjust the workflow dispatch input description to be less specific about the previous default.
seanbudd
commented
May 6, 2026
seanbudd
commented
May 6, 2026
Co-authored-by: Sean Budd <seanbudd123@gmail.com>
SaschaCowley
approved these changes
May 6, 2026
5 tasks
seanbudd
pushed a commit
that referenced
this pull request
Jun 2, 2026
…UR variable (#20258) No issue filed — minor/trivial CI workflow fix. Summary of the issue: Since #20058 (commit 25b57b8), the clearCaches scheduled workflow fails on every fork that does not have the CACHE_EXPIRATION_HOUR repository variable set. The workflow runs every 3 hours and consistently fails with: Error reading JToken from JsonReader. Path '', line 0, position 0. This is a regression: before #20058 the expression was inputs.cache_expiration || 6, which worked fine on forks. Description of user facing changes: None. Description of developer facing changes: The clearCaches scheduled workflow now works on forks out of the box, as described in ci/README.md ("Builds from PRs and pushes to master/beta/rc should work out of the box for forks"). Description of development approach: #20058 changed the env var expression to: CACHE_EXPIRATION_HOUR: ${{ inputs.cache_expiration || fromJSON(vars.CACHE_EXPIRATION_HOUR) || 6 }} When CACHE_EXPIRATION_HOUR is not set as a repository variable, GitHub Actions evaluates vars.CACHE_EXPIRATION_HOUR as an empty string. fromJSON("") throws a hard parse error rather than returning a falsy value, so the intended || 6 fallback is never reached. Fix: move the default inside fromJSON so the empty string is handled before parsing: CACHE_EXPIRATION_HOUR: ${{ inputs.cache_expiration || fromJSON(vars.CACHE_EXPIRATION_HOUR || '6') }} This preserves the existing behaviour for repos that have the variable set, and correctly falls back to 6 hours for forks that do not.
This file contains hidden or 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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Link to issue number:
None
Summary of the issue:
Caches expire after 6 hours, it would be nice if we could increase that number higher, to maybe 8-12.
Description of user facing changes:
None
Description of developer facing changes:
We can tweak cache expiration via github variables
Description of development approach:
Add variable
Testing strategy:
Test workflow run for the branch: https://github.com/nvaccess/nvda/actions/runs/25411277902
Will test more thoroughly on prod, it's low danger
Known issues with pull request:
None