2016-07-01 09:35:21 -07:00
|
|
|
Starz
|
|
|
|
=============================
|
|
|
|
|
|
|
|
Starz uses github oauth to login and then does a simple query on a github
|
|
|
|
account to return their public repos and how many stars each one has.
|
|
|
|
|
|
|
|
Installing From Source
|
|
|
|
==============================
|
|
|
|
|
|
|
|
Move the `starz` directory in the root of your `$GOPATH`. Once there, you can
|
|
|
|
install by running
|
|
|
|
|
|
|
|
```bash
|
|
|
|
$ go install starz/...
|
|
|
|
```
|
|
|
|
|
|
|
|
This will yield a binary called `starzd`. `starzd` comes with its own usage:
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
$ starzd run -h
|
|
|
|
|
|
|
|
run starzd with given options
|
|
|
|
|
|
|
|
Usage:
|
|
|
|
app run [flags]
|
|
|
|
|
|
|
|
Flags:
|
|
|
|
-a, --apitoken string github apitoken
|
|
|
|
-i, --clientId string github oauth clientId
|
|
|
|
-s, --clientSecret string github oauth clientSecret
|
|
|
|
-c, --cookieSecret string cookieSecret
|
|
|
|
-n, --host string hostname
|
|
|
|
-p, --port int port (default -1)
|
|
|
|
```
|
|
|
|
|
|
|
|
`starzd` can be run by giving these flags values. For example:
|
|
|
|
|
|
|
|
```bash
|
|
|
|
$ starzd run -i someClientIdFromGitHub -s someClientSecretFromGihub
|
|
|
|
```
|
|
|
|
|
|
|
|
is the most basic way to run the application. You must get the clientid and
|
|
|
|
clientsecret by creating a github oauth app. To register a github oauth app
|
|
|
|
and get a clientid and clientsecret, please visit [here](https://github.com/settings/applications/new)
|
|
|
|
and fill out the required information.
|
|
|
|
|
|
|
|
Github oauth also requires a github oauth call back route. You can just default
|
|
|
|
this to:
|
|
|
|
|
|
|
|
```bash
|
|
|
|
http://127.0.0.1:$PORT/api/v0/github_oauth_cb/
|
|
|
|
```
|
|
|
|
|
|
|
|
unless you have an another ip you can use.
|
|
|
|
|
|
|
|
All the other flags are not required, but allow you to customize your experience.
|
|
|
|
For example, the apitoken, if not present, limits you to only 60 requests per
|
|
|
|
min.
|
|
|
|
|
|
|
|
The port, hostname, and cookieSecrets default to sane defaults (8000,
|
|
|
|
localhost, and a random string).
|
|
|
|
|
|
|
|
Running a Docker Container
|
|
|
|
==============================
|
|
|
|
|
|
|
|
[Dockerhub](https://hub.docker.com/r/dmmcquay/starz/) contains the full README
|
|
|
|
for the docker container. Please visit the link for complete details.
|
|
|
|
|
|
|
|
Here is an example of passing in all enviroment variables to the starz container:
|
|
|
|
|
|
|
|
```bash
|
|
|
|
$ docker run -d -p 80:8000 \
|
|
|
|
-e STARZ_PORT=$STARZ_PORT \
|
|
|
|
-e STARZ_HOSTNAME=$STARZ_HOSTNAME \
|
|
|
|
-e STARZ_CLIENTID=$STARZ_CLIENTID \
|
|
|
|
-e STARZ_CLIENTSECRET=$STARZ_CLIENTSECRET \
|
|
|
|
-e STARZ_APITOKEN=$STARZ_APITOKEN \
|
|
|
|
-e STARZ_COOKIESECRET=$STARZ_COOKIESECRET \
|
|
|
|
dmmcquay/starz:latest
|
|
|
|
```
|
|
|
|
|
|
|
|
After you have this running, don't forget to update your github oauth call back
|
|
|
|
url to point to the ip, port, and route.
|
|
|
|
|
|
|
|
Deploying to GCE
|
|
|
|
==============================
|
|
|
|
|
|
|
|
In the gce folder you'll find my deployment scripts for deploying starz to GCE
|
|
|
|
running a CoreOS instance. It assumes that you have a correctly configured
|
|
|
|
[gcloud tool enviroment](https://cloud.google.com/sdk/). The instance will, on
|
|
|
|
boot, start a service running the docker container dmmcquay/starz:v1 and
|
|
|
|
expose on port 80.
|
|
|
|
|
|
|
|
Simply run:
|
|
|
|
|
|
|
|
```bash
|
|
|
|
$ bash deploy.sh
|
|
|
|
```
|
|
|
|
|
|
|
|
and the script with create a coreos instance with the running app.
|
|
|
|
|
|
|
|
After running deploy.sh, it will return a ip that you can go to
|
|
|
|
your github oauth page and update the call back url with that ip plus the route:
|
|
|
|
|
|
|
|
```bash
|
|
|
|
http://$GCEIP/api/v0/github_oauth_cb/
|
|
|
|
```
|
|
|
|
|
|
|
|
The deploy.sh script will also make the external IP address you receive from
|
|
|
|
GCE static, so you don't have to worry about it changing underneath you.
|
|
|
|
|
|
|
|
In the cloud-config.yaml file, you will have to add your github oauth clientid
|
|
|
|
and clientsecret. You will also have to add your github api token if you want
|
|
|
|
to be able to have more than 60 requests per hour. Make sure you edit the
|
|
|
|
cloud-config.yaml file, otherwise the values in there by default will cause
|
|
|
|
the application to fail to deploy.
|