Code | npm | Code sample
npm install reshuffle-github-connector
This connector uses the Octokit GitHub REST API package.
This package contains a Reshuffle connector to connect to GitHub.
The following example listens to all GitHub events on a repository:
const { Reshuffle } = require('reshuffle')
const { GitHubConnector } = require('reshuffle-github-connector')
const app = new Reshuffle()
const connector = new GitHubConnector(app, {
token: process.env.TOKEN,
runtimeBaseUrl: process.env.RUNTIME_BASE_URL
})
connector.on({ githubEvent: 'push' }, (event) => {
console.log('GitHub Event: ', event)
})
app.start()
Create an API token from your GitHub account:
- Log in and go to https://github.com/settings/tokens.
- Click "Generate new token".
- Click Copy to clipboard, then paste the token to your script, or elsewhere to save
Provide options as below for connecting to GitHub:
const connector = new GitHubConnector(app, {
token: process.env.TOKEN,
runtimeBaseUrl: process.env.RUNTIME_BASE_URL
})
To use GitHub connector events, you need to provide at least your runtimeBaseUrl. You can also override the default webhookPath and webhookName.
interface GithubConnectorConfigOptions extends OctokitOptions {
secret?: string
webhookPath?: string
runtimeBaseUrl?: string
token?: string
}
// Full list of available options to connect to Octokit GitHub Rest API
type OctokitOptions = {
authStrategy?: any
auth?: any
userAgent?: string
previews?: string[]
baseUrl?: string
log?: {
debug: (message: string) => unknown
info: (message: string) => unknown
warn: (message: string) => unknown
error: (message: string) => unknown
}
request?: OctokitTypes.RequestRequestOptions
timeZone?: string
[option: string]: any
}
To listen to events happening in GitHub, pass the GitHub event type as options
interface GitHubConnectorEventOptions {
owner: process.env.OWNER,
repo: process.env.REPO,
githubEvent: GithubEvent
}
// From: https://developer.github.com/webhooks/event-payloads/#webhook-event-payloads
type GithubEvent =
| 'check_run'
| 'check_suite'
| 'commit_comment'
| 'content_reference'
| 'create'
| 'delete'
| 'deploy_key'
| 'deployment'
| 'deployment_status'
| 'fork'
| 'github_app_authorization'
| 'gollum'
| 'installation'
| 'installation_repositories'
| 'issue_comment'
| 'issues'
| 'label'
| 'marketplace_purchase'
| 'member'
| 'membership'
| 'meta'
| 'milestone'
| 'organization'
| 'org_block'
| 'package'
| 'page_build'
| 'ping'
| 'project_card'
| 'project_column'
| 'project'
| 'public'
| 'pull_request'
| 'pull_request_review'
| 'pull_request_review_comment'
| 'push'
| 'release'
| 'repository_dispatch'
| 'repository'
| 'repository_import'
| 'repository_vulnerability_alert'
| 'security_advisory'
| 'sponsorship'
| 'star'
| 'status'
| 'team'
| 'team_add'
| 'watch'
const app = new Reshuffle()
const connector = new GitHubConnector(app, {
token: process.env.TOKEN,
runtimeBaseUrl: process.env.RUNTIME_BASE_URL
})
connector.on({
owner: process.env.OWNER,
repo: process.env.REPO,
githubEvent: 'issues'
}, async (event, app) => {
console.log(event)
})
connector.on({
owner: process.env.OWNER,
repo: process.env.REPO,
githubEvent: 'fork'
}, async (event, app) => {
console.log(event)
})
All actions are provided via the sdk. // See full list of actions with documentation Octokit GitHub Rest.js Documentation
Few examples:
- Get the issues for a repository
const repoIssues = await connector.sdk().issues.get({
owner,
repo,
issue_number,
})
- Create a pull request
const pullRequest = await connector.sdk().pulls.create({
owner,
repo,
title,
head,
base,
})
- Follow another user:
const user = await connector.sdk().users.follow({
username,
})
Full access to the Octokit GitHub Rest Client
const sdk = await connector.sdk()