silverstripe / github-issue-search-client

UI for searching Github issues across supported modules (aka Elvis)
https://elvis.silverstripe.org
BSD 3-Clause "New" or "Revised" License
6 stars 6 forks source link
hacktoberfest

Github Issue Searcher

Overview

This app uses the Github issue search API to provide a convenient issue browser across all of our supported modules as well as other repositories that are important for maintenance.

It uses vue-cli to simplify local development and production builds for VueJS. You can use it on https://elvis.silverstripe.org.

Preview

Install

Use Node (see .nvmrc for correct version to use).

npm install

Configure

Create an .env with:

VUE_APP_GRAPHQL_ENDPOINT=https://api.github.com/graphql
VUE_APP_GRAPHQL_TOKEN=<token>

Get a Github Personal Access Token and chuck it in <token>. Note that the token should NOT have any other permissions/scopes, since it will be included in the client bundle (and is readable by everyone through network requests). The only reason to include it here is avoiding to hit Github's rate limits without it.

In order to get an updated list of the repositories we care about, you can run the following command. This will be written to the repos.json file in the src folder, which can be updated (in VCS) periodically if required.

This gets run during a deployment.

npm run get-repos

Run locally

npm run serve

Build

npm run build

Deploy

Continuous deployment

The project is published to GitHub Pages automatically when changes are merged into the master branch. This is done via a GitHub Actions workflow.

Manual deployment

You can also deploy projects manually. To do this go to the Actions tab in GitHub, and click "Run workflow".

API keys

There is a historic token stored in the repository as a secret. If you ever need to cycle the token, just update the value of the secret in this repository and redeploy.

Usage

Custom Repositories

You can pass in a custom list of repositories via URL params:

?customRepos=silverstripe/silverstripe-framework,silverstripe/silverstripe-cms

This can be helpful to filter only to repos you're interested on in a specific project context, e.g. extracting them from your composer.lock file.

Protip: You can generate these custom repos from your composer.lock file automatically through Silverstripe Module Issue Browser Util.

Assuming you've got your Composer binaries set up globally, the following will read from your lock file and open the issue browser:

composer global require silverstripe/github-issue-search-composer-util
cat /my/project/composer.lock | github-issue-search | xargs open

Analytics

The default instance has Google Analytics set up under a Silverstripe owned account. Please contact maintainers if you'd like to have a look!