Skip to content

Commit

Permalink
update workflow
Browse files Browse the repository at this point in the history
  • Loading branch information
wgh136 committed Sep 5, 2024
1 parent 0da917b commit c2267e7
Showing 1 changed file with 60 additions and 25 deletions.
85 changes: 60 additions & 25 deletions .github/workflows/delete_old_workflows.yml
Original file line number Diff line number Diff line change
@@ -1,31 +1,66 @@
name: Delete Old Workflows

name: Delete old workflow runs
on:
workflow_dispatch:
inputs:
days:
description: 'Days-worth of runs to keep for each workflow'
required: true
default: '30'
minimum_runs:
description: 'Minimum runs to keep for each workflow'
required: true
default: '6'
delete_workflow_pattern:
description: 'Name or filename of the workflow (if not set, all workflows are targeted)'
required: false
delete_workflow_by_state_pattern:
description: 'Filter workflows by state: active, deleted, disabled_fork, disabled_inactivity, disabled_manually'
required: true
default: "ALL"
type: choice
options:
- "ALL"
- active
- deleted
- disabled_inactivity
- disabled_manually
delete_run_by_conclusion_pattern:
description: 'Remove runs based on conclusion: action_required, cancelled, failure, skipped, success'
required: true
default: "ALL"
type: choice
options:
- "ALL"
- "Unsuccessful: action_required,cancelled,failure,skipped"
- action_required
- cancelled
- failure
- skipped
- success
dry_run:
description: 'Logs simulated changes, no deletions are performed'
required: false

jobs:

delete-old-workflows:
del_runs:
runs-on: ubuntu-latest

permissions:
actions: write
contents: read
steps:
- name: Checkout repository
uses: actions/checkout@v2

- name: Delete old workflows
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
min_created_at=$(date -d '7 days ago' +%Y-%m-%dT%H:%M:%SZ)
workflows=$(gh workflow list --json name,path,createdAt --jq 'map({name: .name, path: .path, createdAt: .createdAt})')
for workflow in $workflows; do
created_at=$(echo $workflow | jq -r '.createdAt')
if [ "$created_at" < "$min_created_at" ]; then
echo "Deleting workflow: $(echo $workflow | jq -r '.name') ($(echo $workflow | jq -r '.path'))"
gh workflow delete "$(echo $workflow | jq -r '.path')" --yes
else
echo "Keeping workflow: $(echo $workflow | jq -r '.name') ($(echo $workflow | jq -r '.path'))"
fi
done
- 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 }}
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 }}

0 comments on commit c2267e7

Please sign in to comment.