NOTE: This is not an officially supported Google product
Triage Party is a stateless web app to optimize issue and PR triage for large open-source projects using the GitHub API.
Triage Party focuses on reducing response latency for incoming GitHub issues and PR's, and ensure that conversations are not lost in the ether. It was built from the Google Container DevEx team's experience contributing to popular open-source projects, such as minikube, Skaffold, and Kaniko.
Triage Party is configured via YAML, and designed for projects to self-host on anything from a Raspberry Pi, Google Cloud Run, or Kubernetes.
Table of Contents
responded: +15d
)reactions: >=5
)comments-per-month: >0.9
)--github-api-url
cli flag)See these fine examples in the wild:
public_repo
permissions (read-only)Store a GitHub token some place on disk:
echo YOUR_GENERATED_TOKEN > $HOME/.github-token
Run:
go run cmd/server/main.go \
--github-token-file=$HOME/.github-token \
--config config/examples/kubernetes.yaml \
--repos kubernetes/sig-release
If you do not have Go installed, you can run Triage Party using Docker:
export GITHUB_TOKEN="$(cat $HOME/.github-token)"
docker build --tag=tp .
docker run \
--rm \
-e GITHUB_TOKEN \
-v "$PWD/config/examples/kubernetes.yaml:/app/config/config.yaml" \
-p 8080:8080 tp
You can also use Personal Access Token from the GitHub CLI to run the application:
export GITHUB_TOKEN=$(grep oauth_token ~/.config/gh/hosts.yml| cut -d ":" -f 2 | sed "s/ //g")
docker build --tag=tp .
docker run \
--rm \
-e GITHUB_TOKEN \
-v "$PWD/config/examples/kubernetes.yaml:/app/config/config.yaml" \
-p 8080:8080 \
tp
You'll see logs emitted as Triage Party pulls content from GitHub. The first time a new repository is used, it will require some time (~45s in this case) to download the necessary data before minikube will render pages. Your new Triage Party site is now available at http://localhost:8080/, but will initially block page loads until the required content has been downloaded. After the first run, pages are rendered from memory within ~5ms.
Triage Party can be configured to accept any triage workflow you can imagine. Here are some tips:
box-with-arrow
icon to open issues/pull requests into a new tab
Use the drop-down labelled Solo
on the top-right of any page to enable multi-player mode. In multi-player mode, the number of issues are split among the number of players you have configured. Since Triage Party is state-less, players are assigned via the remainder of the issue or PR divided by the total number of players. Here is a workflow that we have seen work well for triage parties:
NOTE: Multi-player works best if the "Resolution" field of each rule has a clear action to resolve the item and remove it from the list.
In v1.2.0, pages can now be displayed as a Kanban dashboard. The columns are based on the rule the issue was found in, and the rows are swim-lanes based on the assignee. To see a real-world example:
Best practices for designing a useful Kanban dashboard:
Not started
-> Started
-> Under Review
-> Completed
display: kanban
in its configuration.__velocity__
containing recently closed issues to include. See the example configuration.With the default Dockerfile
, Triage Party refreshes data at least every 8 minutes, settable using the --max-refresh
flag. Triage Party will give popular pages a higher refresh rate, up to every 30 seconds by default (settable using --min-refresh
flag). This default is conservative, allowing Triage Party to work with repositories containing 10,000 open issues without hitting GitHub API limits.
Live data can be requested at any time by using forcing a refresh in their browser, typically by holding the Shift button as you reload the page. See forced refresh for your browser.
You can see how fresh a pages data is by mousing-over the "unique items" text in the top-center of the page.
Thirsting for more? See: