Fix the chore actions #636
Open
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.
LLM have successfully fixed the issue in the dependency-updates.yml file where the script was failing when packages don't have all the expected fields in the audit results. The specific problem you encountered with the jest-dev-server package has been resolved.
Root Cause Analysis
The script was failing with exit code 5 because:
fixAvailable
field was an object instead of a boolean: In the jest-dev-server case,fixAvailable
was{"name": "jest-puppeteer", "version": "11.0.0", "isSemVerMajor": true}
instead of a simpletrue
/false
via
field contained strings instead of objects: Thevia
array contained["wait-on"]
(strings) instead of objects withtitle
,url
, andcvss
properties.title
and.url
on strings, which caused jq to failFixes Applied
1. Fixed
fixAvailable
handling:Before:
FIX_AVAILABLE=$(jq -r ".vulnerabilities[\"$PACKAGE\"].fixAvailable // false" audit_results.json 2>/dev/null)
After:
FIX_AVAILABLE=$(jq -r "if .vulnerabilities[\"$PACKAGE\"].fixAvailable then (if (.vulnerabilities[\"$PACKAGE\"].fixAvailable | type) == \"object\" then \"true\" else (.vulnerabilities[\"$PACKAGE\"].fixAvailable | tostring) end) else \"false\" end" audit_results.json 2>/dev/null)
2. Fixed
via
field processing:Before: Always tried to access
.title
,.url
, and.cvss.score
propertiesAfter: Added type checking to handle both cases:
title
,url
, andcvss.score
3. Enhanced error handling:
All jq commands now use the
// "default_value"
syntax to provide fallback values when fields are missing.Verification
I created comprehensive tests that verified the fixes work correctly with:
fixAvailable
as object,via
as stringsfixAvailable
as boolean,via
as objectsResult
The dependency-updates workflow will now:
fixAvailable
valuesvia
arrays appropriatelyThe script is now robust against the variability in npm audit output formats and will no longer fail on packages like jest-dev-server that have non-standard field structures.
By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.