mirror of
https://github.com/anthropics/claude-code-action.git
synced 2026-01-23 06:54:13 +08:00
refactor: simplify error capture to show clean error messages only
- Remove complex shell script that captured full output logs - Use core.setOutput in prepare.ts to pass clean error message directly - Avoid exposing potentially sensitive information from logs - Show only the actual error message (e.g. 'Failed to fetch issue data') This provides cleaner, more readable error messages without the risk of exposing sensitive information from debug logs. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
21
action.yml
21
action.yml
@@ -81,26 +81,7 @@ runs:
|
|||||||
id: prepare
|
id: prepare
|
||||||
shell: bash
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
set +e
|
bun run ${{ github.action_path }}/src/entrypoints/prepare.ts
|
||||||
# Create a temporary file to capture both stdout and stderr
|
|
||||||
TEMP_OUTPUT=$(mktemp)
|
|
||||||
bun run ${{ github.action_path }}/src/entrypoints/prepare.ts 2>&1 | tee "$TEMP_OUTPUT"
|
|
||||||
PREPARE_EXIT_CODE=${PIPESTATUS[0]}
|
|
||||||
|
|
||||||
# If the command failed, save the error output
|
|
||||||
if [ $PREPARE_EXIT_CODE -ne 0 ]; then
|
|
||||||
# Extract last 50 lines of output as error details
|
|
||||||
ERROR_DETAILS=$(tail -n 50 "$TEMP_OUTPUT")
|
|
||||||
echo "prepare_error<<EOF" >> $GITHUB_OUTPUT
|
|
||||||
echo "$ERROR_DETAILS" >> $GITHUB_OUTPUT
|
|
||||||
echo "EOF" >> $GITHUB_OUTPUT
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Clean up temp file
|
|
||||||
rm -f "$TEMP_OUTPUT"
|
|
||||||
|
|
||||||
# Exit with the original exit code
|
|
||||||
exit $PREPARE_EXIT_CODE
|
|
||||||
env:
|
env:
|
||||||
TRIGGER_PHRASE: ${{ inputs.trigger_phrase }}
|
TRIGGER_PHRASE: ${{ inputs.trigger_phrase }}
|
||||||
ASSIGNEE_TRIGGER: ${{ inputs.assignee_trigger }}
|
ASSIGNEE_TRIGGER: ${{ inputs.assignee_trigger }}
|
||||||
|
|||||||
@@ -92,7 +92,10 @@ async function run() {
|
|||||||
);
|
);
|
||||||
core.setOutput("mcp_config", mcpConfig);
|
core.setOutput("mcp_config", mcpConfig);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
core.setFailed(`Prepare step failed with error: ${error}`);
|
const errorMessage = error instanceof Error ? error.message : String(error);
|
||||||
|
core.setFailed(`Prepare step failed with error: ${errorMessage}`);
|
||||||
|
// Also output the clean error message for the action to capture
|
||||||
|
core.setOutput("prepare_error", errorMessage);
|
||||||
process.exit(1);
|
process.exit(1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -45,8 +45,7 @@ describe("updateCommentBody", () => {
|
|||||||
currentBody: "Claude Code is working...",
|
currentBody: "Claude Code is working...",
|
||||||
actionFailed: true,
|
actionFailed: true,
|
||||||
executionDetails: { duration_ms: 45000 },
|
executionDetails: { duration_ms: 45000 },
|
||||||
errorDetails:
|
errorDetails: "Failed to fetch issue data",
|
||||||
"fatal: not a git repository (or any of the parent directories): .git",
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const result = updateCommentBody(input);
|
const result = updateCommentBody(input);
|
||||||
@@ -54,7 +53,7 @@ describe("updateCommentBody", () => {
|
|||||||
expect(result).toContain("[View job]");
|
expect(result).toContain("[View job]");
|
||||||
expect(result).toContain("<details>");
|
expect(result).toContain("<details>");
|
||||||
expect(result).toContain("<summary>Error details</summary>");
|
expect(result).toContain("<summary>Error details</summary>");
|
||||||
expect(result).toContain("fatal: not a git repository");
|
expect(result).toContain("Failed to fetch issue data");
|
||||||
// Ensure error details come after the header/links
|
// Ensure error details come after the header/links
|
||||||
const errorIndex = result.indexOf("<details>");
|
const errorIndex = result.indexOf("<details>");
|
||||||
const headerIndex = result.indexOf("**Claude encountered an error");
|
const headerIndex = result.indexOf("**Claude encountered an error");
|
||||||
|
|||||||
Reference in New Issue
Block a user