# README
Landing Page Info Aggregator
Micro-service which serves next:
- cache tweets from https://twitter.com/ReportPortal_io
- return latest version numbers for ReportPortal services
- aggregates ReportPortal's GitHub statistics
Build
make help:
@echo "vendor - Install govendor and sync vendored dependencies"
@echo "checkstyle - executes bunch of checkstyle validators"
@echo "fmt - formats the project"
@echo "test - executes unit tests"
@echo "build - builds binary"
@echo "docker - Builds docker image"
@echo "clean - Cleans build-related files from working directory"
@echo "release - Builds docker container and pushes new version to DockerHUB"
Build image with name 'reportportal/landing-info':
make docker
To create container execute:
docker run --name landing-info -p 8080:8080 reportportal/landing-info
API
Aggregator exposes endpoints:
/
Returns all the cached and aggregated data including tweets from Twitter and GitHub-related info
/twitter
Returns the feed cache from the Contentful CMS project as a Twitter-like feed. Includes only text fields.
/versions
Returns latest versions of ReportPortal's Docker Images. Obtains this information from GitHUB API
Github aggregation details
/github/contribution
Returns commits and unique contributors for the last weeks
For example,
{
"commits": {
"1": 0,
"4": 201,
"12": 1018
},
"unique_contributors": {
"1": 20,
"4": 52,
"12": 80
}
}
means that there were no commits for the current week, 201 commits for the last 4 weeks, etc.
/github/stars
Returns stars count for each repository and total count
/github/issues
Aggregates issue statistics from each organization repository
Configuration
Aggregator can be configured through env variables. The following configuration options are available:
ENV VAR | Default Value | Description |
---|---|---|
PORT | 8080 | Application port |
GITHUB_INCLUDE_BETA | false | Whether BETA versions should be included |
GITHUB_TOKEN | false | GitHUB API Token |
GOOGLE_API_KEY | false | Google API Key |
YOUTUBE_BUFFER_SIZE | 10 | Number of videos to be cached |
YOUTUBE_CHANNEL_ID | Null | YouTube channel ID |
CONTENTFUL_TOKEN | Null | Contentful API Access Token |
CONTENTFUL_SPACE_ID | 1n1nntnzoxp4 | Contentful Space ID |
CONTENTFUL_LIMIT | 15 | Number of entries to be fetched and cached |
MAILCHIMP_API_KEY | Null | MailChimp API Key |
MAILCHIMP_USER | landing-aggregator | MailChimp User |
MAILCHIMP_TIMEOUT_SECONDS | 3 | MailChimp Requests Timeout |
Production deployment
Several instances of app should be deployed to provide fault-tolerance and distribute load. There is Traefik which is reverse-proxy and load-balancer which does not require any service registry and allows zero-conf discovery via Docker API. Example can be found here