From 770b6433fa1af5ca16e8ad9149d7ba80ef1986e1 Mon Sep 17 00:00:00 2001 From: Andy Lech Date: Thu, 15 May 2025 19:54:45 -0400 Subject: [PATCH 1/2] Add script to delete older workflow runs --- .github/workflows/delete-workflow-runs.yml | 67 ++++++++++++++++++++++ .vscode/settings.json | 1 + 2 files changed, 68 insertions(+) create mode 100644 .github/workflows/delete-workflow-runs.yml diff --git a/.github/workflows/delete-workflow-runs.yml b/.github/workflows/delete-workflow-runs.yml new file mode 100644 index 0000000..a55c48e --- /dev/null +++ b/.github/workflows/delete-workflow-runs.yml @@ -0,0 +1,67 @@ +# From https://github.com/Mattraks/delete-workflow-runs/tree/main +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: true + +jobs: + del_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 }} + 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 }} diff --git a/.vscode/settings.json b/.vscode/settings.json index f93eaf1..3f5b18f 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -15,6 +15,7 @@ "Highcharts", "Isabelline", "Kaggle", + "Mattraks", "MVVM", "navicon", "noopener", From f96c36fa45a35524543dc197247523d2779378c2 Mon Sep 17 00:00:00 2001 From: Andy Lech Date: Thu, 15 May 2025 21:07:01 -0400 Subject: [PATCH 2/2] Fix use of environment variables in clean-up script --- .github/workflows/delete-workflow-runs.yml | 61 ++++++++++------------ 1 file changed, 28 insertions(+), 33 deletions(-) diff --git a/.github/workflows/delete-workflow-runs.yml b/.github/workflows/delete-workflow-runs.yml index a55c48e..942236b 100644 --- a/.github/workflows/delete-workflow-runs.yml +++ b/.github/workflows/delete-workflow-runs.yml @@ -3,44 +3,40 @@ 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 + 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: true + required: false jobs: del_runs: @@ -54,7 +50,6 @@ jobs: 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 }}