Reputation: 12721
I am trying to programatically run a github workflow using the workflow_dispatch event.
There are two workflows on the master branch. Release Matrix and Release Single.
The single workflow looks like this and it working fine.
release-single.yaml
name: Release Single
on:
workflow_dispatch:
inputs:
type:
description: 'Type'
required: true
version:
description: 'Version'
required: true
label:
description: 'Label'
required: false
tag:
description: 'Tag'
required: true
jobs:
[...]
it shows up in the UI and can be triggered by hand:
The matrix workflow has a step that creates the workflow_dispatch event (I've tried different solutions, both following):
release-matrix.yaml
- uses: actions/github-script@v4
with:
github-token: ${{ github.token }}
debug: true
script: |
const workflow = await github.actions.createWorkflowDispatch({
owner: "owner_name",
repo: "repo_name",
workflow_id: "release-single.yaml",
ref: "${{ github.ref }}",
inputs: {
type: "${{ matrix.type }}",
version: "${{ matrix.version }}",
label: "${{ matrix.label }}",
tag: "${{ matrix.tag }}"
}
});
console.log(workflow);
- uses: benc-uk/[email protected]
with:
workflow: Release Single
repo: ${{ github.repository }}
token: ${{ github.token }}
inputs: '{ "type": "${{ matrix.type }}", "version": "${{ matrix.version }}", "label": "${{ matrix.label }}", "tag": "${{ matrix.tag }}" }'
when the matrix workflow runs it actually executes the steps successfully (both solutions respond with a 204 created just as the documentation states), but no workflow runs show up in the github UI.
Result using actions/github-script and octokit
Result using benc-uk/workflow-dispatch
To finally come to my Question: Am I missing something or doing it wrong? May it be a bug?
Upvotes: 2
Views: 2783
Reputation: 21
As of September 8, 2022, the GITHUB_TOKEN
can now be used for the workflow_dispatch
and repository_dispatch
events.
Upvotes: 1
Reputation: 21
Just to follow up on the answer above (which still is true), the documentation that was originally linked to has moved. The documentation around this can now be found here.
Upvotes: 1
Reputation: 12721
You have to use a personal access token by an actual github user. though using the ${{ github.token }}
gives a 204 Created response, in fact it is not running the workflow. When passing a personal access token instead, it gives exactly the same 204 response and the workflows runs as expected.
Thanks for Benjamin for the deeplink: https://docs.github.com/en/actions/reference/events-that-trigger-workflows#triggering-new-workflows-using-a-personal-access-token
The downside of using a personal access token is, that the workflows are always triggered by an actual user.
Alternatively it is possible to create a github app and with that generate an access token. It will then look like this:
Upvotes: 1