Make WordPress Core


Ignore:
Timestamp:
08/26/2022 07:19:11 PM (3 years ago)
Author:
desrosj
Message:

Build/Test Tools: Automatically rerun a workflow the first time it fails.

There are several common reoccurring issues that sometimes cause GitHub Action workflows to fail (connection timeouts to WordPress.org or the Docker container registry, npm install failures, Chromium issues, etc.). Except when there are service level outages, most of these issues can be resolved by simply rerunning the workflow.

This introduces a new step within each of Core’s GitHub Action workflows that attempts to rerun the failed jobs within the workflow that encountered a failure if they are running for the first time. Since a workflow is not allowed to restart itself, a new failed-workflow.yml callable workflow is being introduced.

Other related adjustments in this changeset:

  • The actions/github-script 3rd-party action is also now updated to the latest version (v6.2.0).
  • A new secret, GHA_WORKFLOW_DISPATCH, has been introduced. This will replace the current one in use (GHA_OLD_BRANCH_DISPATCH) with a less specific name.

Props jorbin, desrosj.
Fixes #56407.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/.github/workflows/test-npm.yml

    r53940 r53947  
    172172      SLACK_GHA_FIXED_WEBHOOK: ${{ secrets.SLACK_GHA_FIXED_WEBHOOK }}
    173173      SLACK_GHA_FAILURE_WEBHOOK: ${{ secrets.SLACK_GHA_FAILURE_WEBHOOK }}
     174
     175  failed-workflow:
     176    name: Failed workflow tasks
     177    runs-on: ubuntu-latest
     178    needs: [ test-npm, test-npm-macos, slack-notifications ]
     179    if: |
     180      always() &&
     181      github.repository == 'WordPress/wordpress-develop' &&
     182      github.event_name != 'pull_request' &&
     183      github.run_number < 2 &&
     184      (
     185        needs.test-npm.result == 'cancelled' || needs.test-npm.result == 'failure' ||
     186        needs.test-npm-macos.result == 'cancelled' || needs.test-npm-macos.result == 'failure'
     187      )
     188
     189    steps:
     190      - name: Dispatch workflow run
     191        uses: actions/github-script@c713e510dbd7d213d92d41b7a7805a986f4c5c66 # v6.2.0
     192        with:
     193          github-token: ${{ secrets.GHA_WORKFLOW_DISPATCH }}
     194          script: |
     195            github.rest.actions.createWorkflowDispatch({
     196              owner: context.repo.owner,
     197              repo: context.repo.repo,
     198              workflow_id: 'failed-workflow.yml',
     199              ref: '${{ github.ref_name }}',
     200              inputs: {
     201                run_id: '${{ github.run_id }}'
     202              }
     203            });
Note: See TracChangeset for help on using the changeset viewer.