This val includes several tools for automating GitHub pull request workflows:
- PR Auto-Assign: Automatically assigns the PR author as an assignee when a PR is opened
- PR Title Prefixer: Automatically prefixes PR titles with the linked issue number
- PR Label Inheritor: Automatically copies labels from linked issues to the PR
- PR Approval Notifier: Sends notifications to Slack when a PR is approved, with an optional merge button
- Slack-GitHub Bug Connector: Finds related GitHub issues when a bug is reported in Slack
See all 3 in actionπ
The github-pr-auto-assign.ts
file automatically assigns the PR author as an assignee when a PR is opened.
Setup:
- Create a GitHub webhook with the "Pull requests" event
- Point it to the auto-assign file URL
- Add
GITHUB_TOKEN
as an environment variable in Val Town with these permissions:- For classic tokens: Include the "repo" scope
- For fine-grained tokens: Ensure "Pull requests" has "Read and Write" access
- Token must be created by a user with write access to the repository
The github-pr-title-prefix.ts
file automatically prefixes PR titles with the linked issue number (inline, in the description) when a PR is opened or edited.
Setup:
- Create a GitHub webhook with the "Pull requests" event
- Point it to the title prefixer file URL
- Ensure your GitHub token has appropriate permissions
The github-pr-inherit-labels.ts
file automatically copies labels from linked issues to the PR when a PR is opened or edited.
Setup:
- Create a GitHub webhook with the "Pull requests" event
- Point it to the label inheritor file URL
- Ensure your GitHub token has appropriate permissions
The github-slack-pr-approval.ts
file sends notifications to Slack when a GitHub pull request is approved, with an optional merge button that appears when all required checks are passing.
See this in actionπ
-
Create a GitHub Personal Access Token (PAT):
- Go to GitHub β Settings β Developer settings β Personal access tokens β Fine-grained tokens
- If this is not a personal repo, make sure to change the
Resource owner
from your personal account to your organization. Get the org admin to approve it at https://github.com/organizations/[YOUR_ORG_NAME}/settings/personal-access-token-requests. - If you're using GitHub Enterprise, follow these instructions
- Create a new token with these permissions:
- Repository access: Select repositories you want to monitor
- Permissions:
- Pull requests: Read and Write
- Contents: Read and Write (for merging)
- Metadata: Read-only
- Save the token for the next step
-
Set up a GitHub Webhook:
- Go to your repository β Settings β Webhooks β Add webhook
- Payload URL: The URL of the respective file
- Content type:
application/json
- Select "Let me select individual events"
- Check only "Pull request reviews"
- Ensure "Active" is checked
- Click "Add webhook"
-
Create a Slack App:
- Go to Slack API Apps β Create New App β From scratch
- Name your app and select your workspace
- Click "Create App"
-
Enable Interactivity:
- In your Slack app settings, go to "Interactivity & Shortcuts"
- Toggle "Interactivity" to On
- Set the Request URL to the URL of the respective file
- Save Changes
-
Create an Incoming Webhook:
- In your Slack app settings, go to "Incoming Webhooks"
- Toggle "Activate Incoming Webhooks" to On
- Click "Add New Webhook to Workspace"
- Select the channel where notifications should be posted
- Copy the Webhook URL for the next step
-
Add Environment Variables:
- In Val Town, add these environment variables:
GITHUB_TOKEN
: Your GitHub Personal Access TokenSLACK_WEBHOOK_URL
: Your Slack Incoming Webhook URL
- In Val Town, add these environment variables:
-
Get the Val URL:
- Copy the file's URL to use in the GitHub webhook and Slack app settings
The slack-github-bug-connector.ts
file automatically finds and comments with related GitHub issues when a new bug is reported in a Slack channel.
- When a new message is posted in a configured Slack channel (ie. #bugs, or #support), Slack sends an event to this Val
- The val makes an OpenAI call to determine if the message is a bug
- If it is, then it searches GitHub for semantically related open issues with a separate OpenAI call
- It posts a comment in the Slack thread with links to related GitHub issues, with a "Relevance Score"
-
Configure Environment Variables in Val Town:
SLACK_BOT_TOKEN
: Your Slack Bot User OAuth Token (starts withxoxb-
)GITHUB_TOKEN
: A GitHub Personal Access Token withrepo
scopeGITHUB_REPO
: The GitHub repository to search in formatowner/repo
-
Set Up Slack App:
- Create a new Slack App with Bot Token Scopes:
chat:write
,channels:history
,groups:history
- Set up Event Subscriptions with the Val's HTTP URL as the Request URL
- Subscribe to the
message.channels
andmessage.groups
bot events - Install the app to your workspace
- Go to the channel you would like to add this integration to, type
/app
to pull up theAdd apps to your workspace
modal - Add the Slack App
- Write up a bug in channel, and it will respond with related GitHub issues
- Create a new Slack App with Bot Token Scopes:
- github-pr-auto-assign.tscharmaine--cb9f33642a2211f0854e569c3dd06744.web.val.run
- github-pr-inherit-labels.tscharmaine--647d850e2a2311f09f48569c3dd06744.web.val.run
- github-pr-title-prefix.tscharmaine--4de773ae2a2311f09e91569c3dd06744.web.val.run
- github-slack-pr-approvals.tscharmaine--2cbbbe6a2a2311f0af26569c3dd06744.web.val.run
- slack-github-bug-connector.tscharmaine--dea771ae367711f0ab2c9e149126039e.web.val.run