• Stars
    star
    721
  • Rank 60,674 (Top 2 %)
  • Language
    TypeScript
  • License
    MIT License
  • Created over 4 years ago
  • Updated about 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A GitHub action to create a repository dispatch event

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@v2
        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@v2
        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@v2
        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@v2
        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.

License

MIT

More Repositories

1

create-pull-request

A GitHub action to create a pull request for changes to your repository in the actions workspace
TypeScript
1,480
star
2

docker-compose-healthcheck

How to wait for container X before starting Y using docker-compose healthcheck
623
star
3

slash-command-dispatch

A GitHub action that facilitates "ChatOps" by creating repository dispatch events for slash commands
TypeScript
475
star
4

create-or-update-comment

A GitHub action to create or update an issue or pull request comment
TypeScript
431
star
5

swagger-github-pages

How to host Swagger API documentation with GitHub Pages
HTML
289
star
6

dockerhub-description

A GitHub action to update a Docker Hub repository description from README.md
TypeScript
258
star
7

docker-compose-actions-workflow

GitHub Actions workflow example using Docker Compose to build and test a multi-container stack
Python
248
star
8

find-comment

A GitHub action to find an issue or pull request comment
TypeScript
108
star
9

create-issue-from-file

A GitHub action to create an issue using content from a file
TypeScript
103
star
10

lightweight-architecture-decision-records

Lightweight Architecture Decision Records
89
star
11

commit-comment

A GitHub action to create a comment for a commit on GitHub
JavaScript
86
star
12

autopep8

A GitHub action for autopep8, a tool that automatically formats Python code to conform to the PEP 8 style guide.
Python
76
star
13

enable-pull-request-automerge

A GitHub action to enable auto-merge on a pull request
72
star
14

nominatim-k8s

Nominatim for Kubernetes on Google Container Engine (GKE).
Shell
60
star
15

s3-backup

A GitHub action to mirror a repository to S3 compatible object storage
Shell
56
star
16

create-or-update-project-card

A GitHub action to create or update a project card
TypeScript
54
star
17

link-checker

A GitHub action for link checking repository Markdown and HTML files
Shell
48
star
18

rebase

A GitHub action to rebase pull requests in a repository
TypeScript
38
star
19

smoke-testing

Smoke testing Docker containers with CircleCI
Kotlin
35
star
20

osrm-backend-k8s

Open Source Routing Machine (OSRM) osrm-backend for Kubernetes on Google Container Engine (GKE).
Shell
35
star
21

sendgrid-action

A GitHub Action to send email with SendGrid
Dockerfile
26
star
22

close-issue

A GitHub action to close an issue
23
star
23

locust-docker

Docker image for the Locust load testing tool and sample Kubernetes configuration files for distributed deployment.
Shell
19
star
24

vegeta-docker

Docker image for the Vegeta HTTP load testing tool
Dockerfile
18
star
25

kotlin-jib

Containerising Kotlin with Jib
Kotlin
17
star
26

kdef

Declarative resource management for Kafka
Go
17
star
27

close-pull

A GitHub action to close a pull request and optionally delete its branch.
16
star
28

osrm-backend-docker

Docker image for the Open Source Routing Machine (OSRM) osrm-backend
Dockerfile
14
star
29

kong-oauth2-consent-app

A consent application for OAuth 2.0 Authorization Code Grant flow with Kong
Go
13
star
30

rust-wasm-action

Rust-generated WebAssembly GitHub action template
Rust
12
star
31

paseto-lua

PASETO (Platform-Agnostic Security Tokens) for Lua
Lua
11
star
32

postman-pre-request

Postman Pre-request script for HMAC Authentication with Kong
JavaScript
11
star
33

mutation-testing

Mutation Testing – featuring an example using Stryker, a framework for the JavaScript ecosystem
JavaScript
10
star
34

slash-command-dispatch-processor

A command processor for slash-command-dispatch, a GitHub action that facilitates "ChatOps"
8
star
35

close-fork-pulls

A GitHub action to close pull requests from forks
TypeScript
6
star
36

duplicati-action

A GitHub action for Duplicati - Store securely encrypted backups in the cloud!
Dockerfile
5
star
37

gradle-auto-dependency-updates

How to automate Gradle dependency updates with GitHub Actions
Kotlin
5
star
38

erc20-token-wallet

A simple Ethereum blockchain ERC20 token wallet interface
JavaScript
5
star
39

patience

Go implementation of the Patience Diff algorithm
Go
4
star
40

kong-plugin-paseto

Kong plugin for PASETO (Platform-Agnostic Security Tokens)
Lua
4
star
41

python-action

A template to bootstrap the creation of a multi-platform Python GitHub action
JavaScript
4
star
42

blog

The blog of Peter Evans
CSS
3
star
43

create-pull-request-tests

Tests for create-pull-request action
3
star
44

gaps-and-islands

Gaps and islands: Merging contiguous ranges
1
star
45

soft-thresholding

Candidate selection using an iterative soft-thresholding algorithm
Python
1
star
46

create-pull-request-tests-remote

Remote repository for create-pull-request action tests
1
star
47

kong-hmac-python

Python module for HMAC Authentication with Kong
Python
1
star
48

curl-jq-docker

An alpine based Docker image with curl and jq
Dockerfile
1
star
49

kubernetes-travis-template

A template project for Kubernetes services development and integration testing
Shell
1
star