Skip to main content

github-snooze-button Build Status Coverage Status GitHub license PyPI

Projects with a lot of issue volume accumulate a lot of open issues which are not immediately actionable, usually because they’re waiting for a response from a contributor. There’s no easy way to hide those from the Github interface or signal to other maintainers that an open issue or PR isn’t actionable yet.

Enter github-snooze-button!

Add a “snooze” label to an issue, and github-snooze-button will remove the label whenever

  • an issue or pull request receives a comment,

  • a pull request receives a comment on a diff, or

  • a pull request branch is updated.

github-snooze-button can operate in two modes: deployed to AWS Lambda, or polling a Amazon SQS queue locally.

Configuration file

github-snooze-button uses .ini-style configuration files that look like:

[default]
github_username = your_username
github_token = your_token
aws_key = your_key
aws_secret = your_secret
snooze_label = snooze
# aws_region = us-west-2 # optional

[your_username/repo1]
ignore_member_of = cool_organization  # ignore comments from members of an organization

[your_username/repo2]
snooze_label = response required

The AWS credentials in the config file are sent to Github and used to push notifications into SNS. The listener also uses them to consume events from SQS. They are not used to configure the Lambda deployment.

Option 1: AWS Lambda deployment

  1. Generate a Github authentication token with public_repo, admin:repo_hook, and (if you’re using ignore_member_of, org:read) scopes. (Note that public_repo gives write permission! These credentials will be embedded in the Lambda deployment package, so you should consider the contents of the deployment package sensitive.)

  2. Save AWS credentials with these permissions or better to a place boto can find them: either in the environment or in a configuration file.

  3. Install github-snooze-button: pip install git+https://github.com/tdsmith/github-snooze-button.git

  4. Launch with snooze_deploy /path/to/config.ini. snooze_deploy will:

    • Build deployment packages for each repository

    • Define or re-use a /tdsmith/github-snooze-button/snooze_lambda_role IAM role with the AWSLambdaBasicExecutionRole policy

    • Create or re-use SNS topics for each repository

    • Configure each Github repository to push notifications to SNS

    • Create or update a Lambda function for each repository

    • Give each SNS topic permission to invoke its matching Lambda function and create a subscription connecting them

And now you’re live.

Option 2: Polling mode

  1. Generate a Github authentication token with public_repo and admin:repo_hook scopes.

  2. In AWS IAM, create a Amazon AWS user with all the AmazonSQS* and AmazonSNS* policies (and possibly fewer?)

  3. Install github-snooze-button: pip install git+https://github.com/tdsmith/github-snooze-button.git

  4. Launch with snooze_listen /path/to/config.ini

Note that the queue will continue collecting events unless you disconnect the repository from SNS.

Teardown

The fastest way to disable github-snooze-button is by deleting the Amazon SNS service from your repository’s “Webhooks & services” configuration page. It will be automatically recreated the next time you run snooze in either mode.

Questions

  • Will this cost me lots of money? Probably not. Lambda, SNS and SQS are both free for the first million transactions a month. Homebrew uses a few hundred transactions a day. YMMV!

Contact

Tim D. Smith: snooze at tds.xyz, Freenode: tdsmith, @biotimylated

Metadata

Release files for github-snooze-button 0.2.0

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

Source distribution (sdist)

Source distribution for github-snooze-button 0.2.0
File Size Uploaded
github-snooze-button-0.2.0.tar.gz 9.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for github-snooze-button 0.2.0
File Interpreter ABI Platform
github_snooze_button-0.2.0-py2.py3-none-any.whl Python 2, Python 3 none any Details

Total release size: 20.9 kB

Release files / github-snooze-button-0.2.0.tar.gz

Download URL github-snooze-button-0.2.0.tar.gz
Size 9.4 kB
Tags Source
SHA-256 checksum
How to use checksums
c8327294e38ce32516e0bdc334dc98259416cb6e2a13e72f0dfd3abdda5eb7e9
BLAKE2b-256 checksum
How to use checksums
e06c85a4ae157a7a67db6dd9d8cdedc76ec696ad76362858e1688b79ca55b21c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release files / github_snooze_button-0.2.0-py2.py3-none-any.whl

Download URL github_snooze_button-0.2.0-py2.py3-none-any.whl
Size 11.5 kB
Tags Python 2 Python 3
SHA-256 checksum
How to use checksums
2071b960ebaf76e9da9795f8f0f08c1574e2eb8669f23109f85299860a1621d0
BLAKE2b-256 checksum
How to use checksums
90975c5466f6242e6f811bcb11465b172ea6b03ae9292ab9a161adf3560f3f08
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

This release

0.2.0 This release

2 release files

0.1.0

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