GitXplorerGitXplorer
p

repository-dispatch

public
999 stars
135 forks
3 issues

Commits

List of commits on branch main.
Verified
7c807020ae9571492db4957043b45da153044160

build(deps-dev): bump eslint-plugin-prettier from 5.2.1 to 5.2.2 (#370)

ddependabot[bot] committed a day ago
Verified
f7939fef18ea132288827c57614a11b2e4c5d8fa

build(deps-dev): bump @types/node from 18.19.70 to 18.19.71 (#369)

ddependabot[bot] committed a day ago
Verified
b3490a0b7ae10c144a3ca4d2471e14a40cb7f50c

build(deps-dev): bump @types/node from 18.19.69 to 18.19.70 (#367)

ddependabot[bot] committed 8 days ago
Verified
52d21f74cecfde1e041652ddabc87c8145b12458

build(deps-dev): bump @types/node from 18.19.68 to 18.19.69 (#365)

ddependabot[bot] committed 15 days ago
Verified
eb6b7b4915b5a92c59ff5b10a986fa811e6d814c

build(deps-dev): bump @types/node from 18.19.67 to 18.19.68 (#364)

ddependabot[bot] committed a month ago
Verified
21138f960c0169e63d8b4ac5857bb4e5cadc7096

build(deps-dev): bump prettier from 3.4.1 to 3.4.2 (#363)

ddependabot[bot] committed a month ago

README

The README file for this repository.

Repository Dispatch

CI GitHub Marketplace

A GitHub action to create a repository dispatch event.

Usage

Dispatch an event to the current repository.

      - name: Repository Dispatch
        uses: peter-evans/repository-dispatch@v3
        with:
          event-type: my-event

Dispatch an event to a remote repository using a repo scoped Personal Access Token (PAT).

      - name: Repository Dispatch
        uses: peter-evans/repository-dispatch@v3
        with:
          token: ${{ secrets.PAT }}
          repository: username/my-repo
          event-type: my-event

Action inputs

Name Description Default
token GITHUB_TOKEN (permissions contents: write) or a repo scoped Personal Access Token (PAT). See token for further details. GITHUB_TOKEN
repository The full name of the repository to send the dispatch. github.repository (current repository)
event-type (required) A custom webhook event name.
client-payload JSON payload with extra information about the webhook event that your action or workflow may use. {}

Token

This action creates repository_dispatch events. The default GITHUB_TOKEN token can only be used if you are dispatching the same repository that the workflow is executing in.

To dispatch to a remote repository you must create a Personal Access Token (PAT) with the repo scope and store it as a secret. If you will be dispatching to a public repository then you can use the more limited public_repo scope.

You can also use a fine-grained personal access token (beta). It needs the following permissions on the target repositories:

  • contents: read & write
  • metadata: read only (automatically selected when selecting the contents permission)

Example

Here is an example setting all of the input parameters.

      - name: Repository Dispatch
        uses: peter-evans/repository-dispatch@v3
        with:
          token: ${{ secrets.PAT }}
          repository: username/my-repo
          event-type: my-event
          client-payload: '{"ref": "${{ github.ref }}", "sha": "${{ github.sha }}"}'

Here is an example on: repository_dispatch workflow to receive the event. Note that repository dispatch events will only trigger a workflow run if the workflow is committed to the default branch.

name: Repository Dispatch
on:
  repository_dispatch:
    types: [my-event]
jobs:
  myEvent:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
        with:
          ref: ${{ github.event.client_payload.ref }}
      - run: echo ${{ github.event.client_payload.sha }}

Dispatch to multiple repositories

You can dispatch to multiple repositories by using a matrix strategy. In the following example, after the build job succeeds, an event is dispatched to three different repositories.

jobs:
  build:
    # Main workflow job that builds, tests, etc.

  dispatch:
    needs: build
    strategy:
      matrix:
        repo: ['my-org/repo1', 'my-org/repo2', 'my-org/repo3']
    runs-on: ubuntu-latest
    steps:
      - name: Repository Dispatch
        uses: peter-evans/repository-dispatch@v3
        with:
          token: ${{ secrets.PAT }}
          repository: ${{ matrix.repo }}
          event-type: my-event

Client payload

The GitHub API allows a maximum of 10 top-level properties in the client-payload JSON. If you use more than that you will see an error message like the following.

No more than 10 properties are allowed; 14 were supplied.

For example, this payload will fail because it has more than 10 top-level properties.

client-payload: ${{ toJson(github) }}

To solve this you can simply wrap the payload in a single top-level property. The following payload will succeed.

client-payload: '{"github": ${{ toJson(github) }}}'

Additionally, there is a limitation on the total data size of the client-payload. A very large payload may result in a client_payload is too large error.

Multiline

A multiline client-payload can be set directly in YAML, as in the following example.

      - name: Repository Dispatch
        uses: peter-evans/repository-dispatch@v3
        with:
          token: ${{ secrets.PAT }}
          repository: username/my-repo
          event-type: my-event
          client-payload: |-
            {
              "repo": {
                "name": "${{ github.repository }}",
                "branch": "${{ needs.build_cfg.outputs.REPO_BRANCH }}",
                "tag": "${{ needs.build_cfg.outputs.REPO_TAG }}"
              },
              "deployment": {
                "project": "${{ env.MY_PROJECT }}",
                "container": "${{ env.MY_CONTAINER }}",
                "deploy_msg": "${{ env.SLACK_DEPLOY_MSG }}",
              }
            }

License

MIT