A script that uses the GitHub API to look for issues with specific labels in a repository, and generates notifications based on the age and the last activity of the issue.
This repository provides a script bin/gh_escalate
which should be executed on a daily basis.
Three files are required to be present in the $PWD
from where the script is invoked:
policies.yaml
targets.yaml
config.yaml
policies.yaml
YAML document where the keys are labels, and the values are an array of policies. Each policy may have:
:since
: Runs only if current time is after creation time +:since
in days:until
: Runs only if current time is before creation time +:until
in days:last_activity
: Runs only if current time is after updated_time +:last_activity
in days:target
: Array of notification targets
Example:
SEV1:
- :since: 2
:until: 5
:targets:
- XX
- :since: 5
:targets:
- XX
- BOSS
SEV2:
- :since: 2
:until: 5
:last_activity: 2
:targets:
- YY
- :since: 5
:last_activity: 2
:targets:
- YY
- BOSS
targets.yaml
YAML document where the keys are target names, and the values are an array of targets. Each target should have a :provider
and :args
. The value of :args
depends on the provider. Currently the only provider supported is :email
.
Example:
XX:
- :provider: :email
:args: [email protected]
YY:
- :provider: :email
:args: [email protected]
- :provider: :email
:args: [email protected]
config.yaml
Currently two configuration parameters must be specified:
:repo
: The repository to watch.:token
: The GitHub token.
These two parameters (and the entire config.yaml
) may be omitted if GHESCALATE_GH_REPO
and GHESCALATE_GH_TOKEN
environment variables are provided.
Once the configuration files are present, the script may be executed:
bundle install
bundle exec bin/gh_escalate