Skip to main content

pull_request_auto_labeler

Automatically label Github pull requests based on elements of the PR title. Default configuration expects Jira style ticket code(PROJ-100) in PR title

This labeler does the following:

  • get all open Pull Requests for all the repositories for an organization/user
  • check each PR to see if it has any matching a Jira style ticket code in the title (PROJ-100)
  • apply a label to the Pull Request matching the uppercase version of the project codes from the title (PROJ)

PyPI version

Installation

If you want to run this as a cron, you can install from pypi with pip: pip install pull-request-auto-labeler

But if you're going to set this up as an AWS Lambda, you'll want the serverless.yaml, serverless-requirements.txt and handler.py so you might as well pull the source.

Setup

Set the following enviornment vars:

  • [Required] GITHUB_API_TOKEN: A Github API Token which has access to read the repositories you want and modify pull requests. If you don't have one you see the guide here
  • [Required] ORGANIZATION: the name of the github organization/username that you want to check PRs for.
  • [Optional] LABEL_EXTRACTING_REGEX: Regex expression which will be applied on the PR title using python's re.findall.
    • This regex expression should have one matching group which returns the portion of the title which should be used as a label. i.e. if the regex finds PROJ-100, the matching group should be PROJ
    • Since we're using re.findall this can have multiple matches on the title, but each match must have only one group.
    • Default is \s*[\[]*([a-zA-Z0-9]{2,})[-|\s][0-9]+ which matches: PROJ-100, [PROJ-100], B2C-1, Proj 100.

Running from command line

python auto_labeler.py

Running as a Cron on AWS Lambda

For convenience I've included setup instructions to run this as a cron using aws lambda made easy by the serverless toolkit. If you haven't used serverless, I have a getting started with serverless guide here

Install serverless plugins

serverless-python-requirements

Its pretty annoying to add external requirements to a lambda when deploying manually. You have to build the wheels for the packages on an aws linux ami and include those in the zip that you upload. Luckily, there's a serverless plugin to make that all super easy.

sls plugin install -n serverless-python-requirements

Setup serverless for this project

  • Copy the serverless.yaml, serverless-requirements.txt and handler.py files in this repo to wherever you're using this, or simply download this repo and use that as your source
  • tweak any provider params you need to to match your setup
  • Set the run frequency (update under functions>lambdaCron>events>schedule)

Deploy to AWS

sls deploy

Release files for pull-request-auto-labeler 0.12

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pull-request-auto-labeler 0.12
File Size Uploaded
pull_request_auto_labeler-0.12.tar.gz 3.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pull-request-auto-labeler 0.12
File Interpreter ABI Platform
pull_request_auto_labeler-0.12-py3-none-any.whl Python 3 none any Details

Total release size: 9.1 kB

Release files / pull_request_auto_labeler-0.12.tar.gz

Download URL pull_request_auto_labeler-0.12.tar.gz
Size 3.8 kB
Tags Source
SHA-256 checksum
How to use checksums
8fd37424e5ce835cbb6d4a9a74b947c883734c078d03b71996f3c31d67953a67
BLAKE2b-256 checksum
How to use checksums
992479b946e820cf84972a050e816ac146ac0fabe835a1d40a3999649adeef67
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/39.1.0 requests-toolbelt/0.9.1 tqdm/4.33.0 CPython/3.7.3

Release files / pull_request_auto_labeler-0.12-py3-none-any.whl

Download URL pull_request_auto_labeler-0.12-py3-none-any.whl
Size 5.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
d4d448a7159359ab83ce6aaa7c17f380f1411a4f97aee7564ee130f7d8ad7a1c
BLAKE2b-256 checksum
How to use checksums
2d829ff70a597ed9e9e21419b93f05e0a2b946fa53f861f0b06b413df97a2a08
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/39.1.0 requests-toolbelt/0.9.1 tqdm/4.33.0 CPython/3.7.3

Release history Release notifications | RSS feed

This release

0.12 This release

2 release files

0.11

2 release files

0.10

2 release files

0.9

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page