await-remote-run
await-remote-run copied to clipboard
✅ Await the completion of a foreign repository Workflow Run given the Run ID.
GitHub Action: await-remote-run
Await the completion of a foreign repository Workflow Run given the Run ID.
This Action exists as a workaround for the issue where you cannot await the completion of a dispatched action.
This action requires being able to get the run ID from a dispatched action, this can be achieved through another Action i've created, return-dispatch.
Should a remote workflow run fail, this action will attempt to output which step failed, with a link to the workflow run itself.
An example using both of these actions is documented below.
Usage
Once you have configured your remote repository to work as expected with the return-dispatch action, include await-remote-run as described below.
steps:
- name: Dispatch an action and get the run ID
uses: codex-/return-dispatch@v1
id: return_dispatch
with:
token: ${{ github.token }}
repo: repository-name
owner: repository-owner
workflow: automation-test.yml
- name: Await Run ID ${{ steps.return_dispatch.outputs.run_id }}
uses: Codex-/[email protected]
with:
token: ${{ github.token }}
repo: return-dispatch
owner: codex-
run_id: ${{ steps.return_dispatch.outputs.run_id }}
run_timeout_seconds: 300 # Optional
poll_interval_ms: 5000 # Optional
Permissions Required
The permissions required for this action to function correctly are:
reposcope- You may get away with simply having
repo:public_repo repois definitely needed if the repository is private.
- You may get away with simply having
actions:read
APIs Used
For the sake of transparency please note that this action uses the following API calls:
- Get a workflow run
- GET
/repos/{owner}/{repo}/actions/runs/{run_id} - Permissions:
repoactions:read
- GET
- List jobs for a workflow run
- GET
/repos/{owner}/{repo}/actions/runs/{run_id}/jobs - Permissions:
repoactions:read
- GET
For more information please see api.ts.
Where does this help?
If you want to use the result of a Workflow Run from a remote repository to complete a check locally, i.e. you have automated tests on another repository and don't want the local checks to pass if the remote fails.