CLI App that polls data from GitHub REST API, stores it and gives analysis on contributors activity for given repository.
Here's what counts as activity point:
- commit,
- closed Issue (not marked as Stale),
- a comment in an Issue or a Pull request,
- review of a Pull request (regardless of whether it's approved or rejected),
- merge of a Pull request.
Examples of Github Actions for these scripts can be found in examples folder.
npm i -g @adguard/github-statsPolls events from GitHub API and stores them in JSONL files (one per day) along with metadata files.
env \
COLLECTION_PATH=stats-data \
GITHUB_TOKEN=token \
REPO=AdguardTeam/AdguardFilters \
github-polltotalEvents— total number of events fetched from GitHub APIeventsWritten— number of unique events written to file after deduplicationpagesCollected— number of API pages processedrateLimitReached— whether API rate limit was reachedrateLimitRemaining— remaining API requestsrateLimitReset— when the rate limit will reset
Note:
eventsWrittenmay be less thantotalEventsdue to deduplication of events that appear in multiple poll runs.
env \
COLLECTION_PATH=stats-data \
GITHUB_TOKEN=token \
REPO=AdguardTeam/AdguardFilters \
UNTIL=2022-05-25T15:00:00Z \
SINCE=2022-05-01T00:00:00Z \
github-statsenv \
SLACK_OAUTH_TOKEN=token \
SLACK_CHANNEL_ID=id \
COLLECTION_PATH=stats-data \
REPO=AdguardTeam/AdguardFilters \
UNTIL=2022-11-22T21:00:00Z \
SINCE=2022-11-21T21:00:00Z \
github-publishNote: team members are always included, but only contributors with activity points above the
MIN_REQUIRED_ACTIVITYthreshold (defined insrc/constants.js) will appear in Slack reports.
COLLECTION_PATH— required, path to a jsonl file that stores eventsGITHUB_TOKEN— optional, Github Personal Access Token. API rate is limited to 60 requests an hour if not provided.REPO— required, path to a Github repository as{owner}/{repo_name}UNTIL— optional, timestamp in ISO 8601 format:YYYY-MM-DDTHH:MM:SS. Defaults to now.SINCE— optional, timestamp in ISO 8601 format:YYYY-MM-DDTHH:MM:SS. All stored events will be used if not provided.
SLACK_OAUTH_TOKEN— required, Slack App tokenSLACK_CHANNEL_ID— required, channel id to post messages to