Skip to content

Fix clearCaches workflow failing on forks without CACHE_EXPIRATION_HOUR variable#20258

Merged
seanbudd merged 1 commit into
nvaccess:masterfrom
bramd:fix-clearCaches-fork-compat
Jun 2, 2026
Merged

Fix clearCaches workflow failing on forks without CACHE_EXPIRATION_HOUR variable#20258
seanbudd merged 1 commit into
nvaccess:masterfrom
bramd:fix-clearCaches-fork-compat

Conversation

@bramd

@bramd bramd commented Jun 1, 2026

Copy link
Copy Markdown
Contributor

Link to issue number:

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.

Testing strategy:

Manually triggered the fixed workflow on the bramd/nvda fork (which does not have CACHE_EXPIRATION_HOUR set) — run 26745038474 succeeded in 4 s, compared to consistent failures on the same fork before the fix.

Before the fix, scheduled run 26735057185 failed with the JSON parse error on line 15.

Known issues with pull request:

None.

Code Review Checklist:

  • Documentation:
    • Change log entry — not required, no user-facing change
    • User Documentation — N/A
    • Developer / Technical Documentation — N/A (ci/README.md already states this workflow works out of the box for forks)
    • Context sensitive help for GUI changes — N/A
  • Testing:
    • Unit tests — N/A (workflow file)
    • System (end to end) tests — N/A
    • Manual testing — manually triggered on a fork without the variable set; passed
  • UX of all users considered — N/A (CI workflow only)
  • API is compatible with existing add-ons — N/A
  • Security precautions taken — N/A

…UR variable

fromJSON(vars.CACHE_EXPIRATION_HOUR) fails when the variable is unset (empty string
is not valid JSON). Use fromJSON(vars.CACHE_EXPIRATION_HOUR || ''6'') to default to
6 hours when the variable is not configured.
@bramd bramd marked this pull request as ready for review June 1, 2026 09:09
@bramd bramd requested a review from a team as a code owner June 1, 2026 09:09
@bramd bramd requested a review from SaschaCowley June 1, 2026 09:09
@OzancanKaratas OzancanKaratas requested a review from seanbudd June 1, 2026 20:08
@seanbudd seanbudd added the conceptApproved Similar 'triaged' for issues, PR accepted in theory, implementation needs review. label Jun 1, 2026
@seanbudd seanbudd merged commit b8da95b into nvaccess:master Jun 2, 2026
42 checks passed
@github-actions github-actions Bot added this to the 2026.3 milestone Jun 2, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

conceptApproved Similar 'triaged' for issues, PR accepted in theory, implementation needs review.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants