From ff5450d6ccfe9fa4c517a740efd304b16198c647 Mon Sep 17 00:00:00 2001 From: Dana Doherty Date: Thu, 22 Aug 2024 10:13:01 +0100 Subject: [PATCH] (CAT-1820) Move workflow-restarter to cat_github_actions --- .github/workflows/workflow-restarter.yml | 51 ++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 .github/workflows/workflow-restarter.yml diff --git a/.github/workflows/workflow-restarter.yml b/.github/workflows/workflow-restarter.yml new file mode 100644 index 0000000..91ec12b --- /dev/null +++ b/.github/workflows/workflow-restarter.yml @@ -0,0 +1,51 @@ +--- +name: Workflow Restarter +on: + workflow_dispatch: + inputs: + repo: + description: "GitHub repository name." + required: true + type: string + run_id: + description: "The ID of the workflow run to rerun." + required: true + type: string + retries: + description: "The number of times to retry the workflow run." + required: false + type: number + default: 3 + secrets: + GITHUB_TOKEN: + required: true + +jobs: + rerun: + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Check retry count + id: check-retry + run: | + # IF `--attempts` returns a non-zero exit code, then keep retrying + status_code=$(gh run view ${{ inputs.run_id }} --repo ${{ inputs.repo }} --attempt ${{ inputs.retries }} --json status) || { + echo "Retry count is within limit" + echo "::set-output name=should_retry::true" + exit 0 + } + + # ELSE `--attempts` returns a zero exit code, so stop retrying + echo "Retry count has reached the limit" + echo "::set-output name=should_retry::false" + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Re-run failed jobs + if: ${{ steps.check-retry.outputs.should_retry == 'true' }} + run: gh run rerun --failed ${{ inputs.run_id }} --repo ${{ inputs.repo }} + continue-on-error: true + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}