Skip to content

Workflow Restarter TEST #4

Workflow Restarter TEST

Workflow Restarter TEST #4

name: Workflow Restarter TEST
on:
workflow_dispatch:
inputs:
fail:
description: >
For (acceptance, unit) jobs:
'true' = (fail, succeed) and
'false' = (succeed, fail)
required: true
default: 'true'
jobs:
unit:
runs-on: ubuntu-latest
steps:
- name: Check outcome
run: |
if [ "${{ github.event.inputs.fail }}" = "true" ]; then
echo "'unit' job succeeded"
exit 0
else
echo "'unit' job failed"
exit 1
fi
acceptance:
runs-on: ubuntu-latest
steps:
- name: Check outcome
run: |
if [ "${{ github.event.inputs.fail }}" = "true" ]; then
echo "'acceptance' job failed"
exit 1
else
echo "'acceptance' job succeeded"
exit 0
fi
on-failure-workflow-restarter-proxy:
# (1) run this job after the "acceptance" job and...
needs: [acceptance, unit]
# (2) continue ONLY IF "acceptance" fails
if: always() && needs.acceptance.result == 'failure' || needs.unit.result == 'failure'
runs-on: ubuntu-latest
steps:
# (3) checkout this repository in order to "see" the following custom action
- name: Checkout repository
uses: actions/checkout@v2
# (4) "use" the custom action to retrigger the failed "acceptance job" above
# NOTE: pass the SOURCE_GITHUB_TOKEN to the custom action because (a) it must have
# this to trigger the reusable workflow that restarts the failed job; and
# (b) custom actions do not have access to the calling workflow's secrets
- name: Trigger reusable workflow
uses: ./.github/actions/workflow-restarter-proxy
env:
SOURCE_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
repository: ${{ github.repository }}
run_id: ${{ github.run_id }}