Add json-secret-keys parameter for selective JSON key extraction #264
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.
Summary
This PR adds a new optional
json-secret-keys
parameter that allows users to specify which keys from JSON secrets should be extracted as environment variables. This solves the over-masking problem where ALL values in JSON secrets get marked as secrets, making debugging nearly impossible.Problem Description
When using
parse-json-secrets: true
, all JSON values are marked as secrets viacore.setSecret()
, causing over-masking where innocent values like usernames, hostnames, and API endpoints get redacted throughout GitHub Action logs.Example: A JSON secret containing
{"DOCKER_USERNAME": "liquibase", "DOCKER_PASSWORD": "secret123"}
would mask the word "liquibase" everywhere in logs, making debugging very difficult.Solution
The new
json-secret-keys
parameter allows selective extraction:This would only extract and mask the
password
andapi_key
values, leaving other non-sensitive values likeusername
andhost
unmasked.Key Features
json-secret-keys
is not provided, all keys are extracted (existing behavior)Changes Made
json-secret-keys
input parameter toaction.yml
injectSecret()
function inutils.ts
to support selective key filteringindex.ts
to read and pass the new parameterTesting
dist/
directoryExamples
Before: All JSON values get masked, making debugging difficult
After: Only sensitive values get masked
password
value gets maskedusername
,host
,port
remain visible in logs for debuggingFixes #263
🤖 Generated with Claude Code