Github Action for trigger a workflow from another workflow. The action then waits for a response.
When would you use it?
When deploying an app you may need to deploy additional services, this Github Action helps with that.
Argument Name | Required | Default | Description |
---|---|---|---|
owner |
True | N/A | The owner of the repository where the workflow is contained. |
repo |
True | N/A | The repository where the workflow is contained. |
github_token |
True | N/A | The Github access token with access to the repository. Its recommended you put it under secrets. |
workflow_file_name |
True | N/A | The reference point. For example, you could use main.yml. |
github_user |
False | N/A | The name of the github user whose access token is being used to trigger the workflow. |
ref |
False | main | The reference of the workflow run. The reference can be a branch, tag, or a commit SHA. |
wait_interval |
False | 10 | The number of seconds delay between checking for result of run. |
client_payload |
False | {} |
Payload to pass to the workflow, must be a JSON string |
propagate_failure |
False | true |
Fail current job if downstream job fails. |
trigger_workflow |
False | true |
Trigger the specified workflow. |
wait_workflow |
False | true |
Wait for workflow to finish. |
comment_downstream_url |
False | `` | A comments API URL to comment the current downstream job URL to. Default: no comment |
comment_github_token |
False | ${{github.token}} |
token used for pull_request comments |
- uses: convictional/[email protected]
with:
owner: keithconvictional
repo: myrepo
github_token: ${{ secrets.GITHUB_PERSONAL_ACCESS_TOKEN }}
- uses: convictional/[email protected]
with:
owner: keithconvictional
repo: myrepo
github_token: ${{ secrets.GITHUB_PERSONAL_ACCESS_TOKEN }}
github_user: github-user
workflow_file_name: main.yml
ref: release-branch
wait_interval: 10
client_payload: '{}'
propagate_failure: false
trigger_workflow: true
wait_workflow: true
- uses: convictional/[email protected]
with:
owner: keithconvictional
repo: myrepo
github_token: ${{ secrets.GITHUB_PERSONAL_ACCESS_TOKEN }}
comment_downstream_url: ${{ github.event.pull_request.comments_url }}
You can test out the action locally by cloning the repository to your computer. You can run:
INPUT_OWNER="keithconvictional" \
INPUT_REPO="myrepo" \
INPUT_GITHUB_TOKEN="<REDACTED>" \
INPUT_GITHUB_USER="github-user" \
INPUT_WORKFLOW_FILE_NAME="main.yml" \
INPUT_REF="release-branch" \
INPUT_WAIT_INTERVAL=10 \
INPUT_CLIENT_PAYLOAD='{}' \
INPUT_PROPAGATE_FAILURE=false \
INPUT_TRIGGER_WORKFLOW=true \
INPUT_WAIT_WORKFLOW=true \
busybox sh entrypoint.sh
You will have to create a Github Personal access token. You can create a test workflow to be executed. In a repository, add a new main.yml
to .github/workflows/
. The workflow will be:
name: Main
on:
workflow_dispatch
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@master
- name: Pause for 25 seconds
run: |
sleep 25
You can see the example here. For testing a failure case, just add this line after the sleep:
...
- name: Pause for 25 seconds
run: |
sleep 25
echo "For testing failure"
exit 1
When triggering many workflows at the same time (e.g., via matrix
), the logic for selecting the workflow ID associated with the parent job will get confused. This leads to the incorrect status often being propagated to the parent job.
As a workaround, you can use unique names for the workflows and then set the run-name
property.
See the example workflow for an example of how to do this.
If you do not want the latest build all of the time, please use a versioned copy of the Github Action. You specify the version after the @
sign.
- uses: convictional/[email protected]
with:
owner: keithconvictional
repo: myrepo
github_token: ${{ secrets.GITHUB_PERSONAL_ACCESS_TOKEN }}