diff --git a/.github/workflows/release-spec.yml b/.github/workflows/release-spec.yml index 65c20835e3..303dfa2fdc 100644 --- a/.github/workflows/release-spec.yml +++ b/.github/workflows/release-spec.yml @@ -184,10 +184,20 @@ jobs: branch: ${{ inputs.branch }} foascli_version: ${{ inputs.foascli_version }} - failure-handler: - name: Failure Handler + retry-handler: needs: [ release, release-postman, release-changelog] - if: ${{ always() && contains(needs.*.result, 'failure') }} + if: ${{ always() && contains(needs.*.result, 'failure') && fromJSON(github.run_attempt) < 3}} + runs-on: ubuntu-latest + steps: + - env: + GH_REPO: ${{ github.repository }} + GH_TOKEN: ${{ secrets.api_bot_pat }} + run: gh workflow run retry-handler.yml -F run_id=${{ github.run_id }} + + failure-handler: + name: Failure Handler + needs: [retry-handler, release, release-postman, release-changelog] + if: ${{ always() && contains(needs.*.result, 'failure') && needs.retry-handler.result == 'skipped' }} uses: ./.github/workflows/failure-handler.yml with: env: ${{ inputs.env }} diff --git a/.github/workflows/retry-handler.yml b/.github/workflows/retry-handler.yml new file mode 100644 index 0000000000..9b7adf424f --- /dev/null +++ b/.github/workflows/retry-handler.yml @@ -0,0 +1,20 @@ +name: 'Retry failures in the Release Workflow' +on: + workflow_dispatch: + inputs: + run_id: + required: true + description: 'The ID of the workflow to rerun.' + type: string +jobs: + rerun: + runs-on: ubuntu-latest + steps: + - name: rerun ${{ inputs.run_id }} + env: + GH_REPO: ${{ github.repository }} + GH_TOKEN: ${{ github.token }} + GH_DEBUG: api + run: | + gh run watch ${{ inputs.run_id }} > /dev/null 2>&1 + gh run rerun ${{ inputs.run_id }} --failed