wait-for-status-checks
wait-for-status-checks copied to clipboard
Added `success_conclusions` and `timeout_behavior` inputs
🚀 Added Configurable Success Criteria and Timeout Behavior
This PR adds two new optional inputs to make the action more flexible while maintaining complete backward compatibility.
✨ New Features
1. Configurable Success Conclusions (success_conclusions)
- What: Define which GitHub check conclusion states should be considered successful
-
Default:
'success,skipped'(maintains current behavior) - Validation: Only accepts valid GitHub conclusion states
- uses: poseidon/[email protected]
with:
token: ${{ secrets.GITHUB_TOKEN }}
success_conclusions: 'success,skipped,neutral' # Also treat 'neutral' as success
2. Configurable Timeout Behavior (timeout_behavior)
- What: Control what happens when the timeout is reached
-
Default:
'fail'(maintains current behavior) -
Options:
'fail'|'success'
- uses: poseidon/[email protected]
with:
token: ${{ secrets.GITHUB_TOKEN }}
timeout_behavior: 'success' # Don't fail on timeout, assume checks will pass
🎯 Use Cases
Flexible Success Criteria:
- Include
'neutral'conclusions as successful for some workflows - Only require
'success'(exclude'skipped') for strict validation - Handle custom conclusion states from third-party tools
Timeout Flexibility:
-
'fail'(default): Strict enforcement - all checks must complete within timeout -
'success': Non-blocking CI - trust that slow checks will eventually pass
🔒 Validation & Safety
- ✅ Input validation: Both new inputs validate against known valid values with clear error messages
- ✅ Backward compatibility: All existing workflows continue to work unchanged
- ✅ Type safety: Full TypeScript typing with proper union types
- ✅ Error handling: Clear validation errors if invalid values are provided
📝 Examples
Current behavior (unchanged):
- uses: poseidon/[email protected]
with:
token: ${{ secrets.GITHUB_TOKEN }}
# Defaults: success_conclusions='success,skipped', timeout_behavior='fail'
Strict validation:
- uses: poseidon/[email protected]
with:
token: ${{ secrets.GITHUB_TOKEN }}
success_conclusions: 'success' # Only success, not skipped
timeout_behavior: 'fail'
Flexible/optimistic:
- uses: poseidon/[email protected]
with:
token: ${{ secrets.GITHUB_TOKEN }}
success_conclusions: 'success,skipped,neutral'
timeout_behavior: 'success' # Don't block on slow checks
🔧 Implementation Details
-
Modified
isFailure()function: Now accepts configurable success conclusions array - Enhanced timeout handling: Simple switch statement for timeout behaviors
- Input validation: Validates against GitHub's official conclusion states
- Clean error messages: Users get clear feedback on invalid configurations
This maintains the action's reliability while providing the flexibility requested by users who need different success criteria or timeout handling for their specific CI/CD workflows.
Please take this one