Fix clearCaches workflow failing on forks without CACHE_EXPIRATION_HOUR 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.