name: Delete old workflow runs on: workflow_dispatch: inputs: days: description: "Days to retain runs" default: "30" minimum_runs: description: "Minimum runs to keep" default: "6" use_daily_retention: description: "Enable daily retention (keep minimum runs per day instead of overall)" default: "false" type: choice options: - "false" - "true" delete_workflow_pattern: description: "Workflow name or filename (omit for all). Use `|` to separate multiple filters (e.g. 'build|deploy')." delete_workflow_by_state_pattern: description: "Workflow state: active, deleted, disabled_fork, disabled_inactivity, disabled_manually" default: "ALL" type: choice options: - "ALL" - active - deleted - disabled_inactivity - disabled_manually delete_run_by_conclusion_pattern: description: "Run conclusion: action_required, cancelled, failure, skipped, success" default: "ALL" type: choice options: - "ALL" - "Unsuccessful: action_required,cancelled,failure,skipped" - action_required - cancelled - failure - skipped - success dry_run: description: "Simulate deletions" default: "false" type: choice options: - "false" - "true" jobs: delete-runs: runs-on: ubuntu-latest permissions: actions: write contents: read steps: - name: Delete workflow runs uses: Mattraks/delete-workflow-runs@v2 with: token: ${{ github.token }} repository: ${{ github.repository }} retain_days: ${{ github.event.inputs.days }} keep_minimum_runs: ${{ github.event.inputs.minimum_runs }} use_daily_retention: ${{ github.event.inputs.use_daily_retention }} delete_workflow_pattern: ${{ github.event.inputs.delete_workflow_pattern }} delete_workflow_by_state_pattern: ${{ github.event.inputs.delete_workflow_by_state_pattern }} delete_run_by_conclusion_pattern: >- ${{ startsWith(github.event.inputs.delete_run_by_conclusion_pattern, 'Unsuccessful:') && 'action_required,cancelled,failure,skipped' || github.event.inputs.delete_run_by_conclusion_pattern }} dry_run: ${{ github.event.inputs.dry_run }}