wait-for-status-checks icon indicating copy to clipboard operation
wait-for-status-checks copied to clipboard

Added `success_conclusions` and `timeout_behavior` inputs

Open ignacio-circle2 opened this issue 3 months ago • 2 comments

🚀 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.

ignacio-circle2 avatar Sep 25 '25 15:09 ignacio-circle2

CLA assistant check
All committers have signed the CLA.

CLAassistant avatar Sep 25 '25 15:09 CLAassistant

Please take this one

marcellodesales avatar Nov 13 '25 18:11 marcellodesales