Native Setup - acm-uiuc/groot GitHub Wiki

Getting Started

Note: It is necessary for you to have an ssh key (without a password if you want it to be even easier) attached to your github

First Time Dependency Setup

  1. Install repo - https://android.googlesource.com/tools/repo/

    Mac OS

    brew install repo 
    

    Ubuntu 14.04+

    sudo apt install repo
    
    
  2. Make a directory to house your groot work

    mkdir groot
    
  3. Within this directory run the following command to start managing the projects

    repo init -u [email protected]:acm-uiuc/groot-manifest
    
  4. Run the following command to grab the latest releases of the services and frontend

    repo sync
    
  • Golang

    • Install Software
    mkdir [SOME DIRECTORY]
    mkdir [SOME DIRECTORY]/bin && mkdir [SOME DIRECTORY]/lib \
    && mkdir [SOME DIRECTORY]/src
    mkdir -p [SOME DIRECTORY]/src/github.com/acm-uiuc
    

    --- Add to .profile (.zshrc/.bashrc) ---

    export GOPATH=[SOME DIRECTORY]
    
    #macOS 
    export GOROOT=/usr/local/opt/go/libexec
    #Ubuntu 14.04+
    export GOROOT=/usr/local/go
    
    export PATH=$PATH:$GOPATH/bin
    export PATH=$PATH:$GOROOT/bin
    
    #macOS
    brew install go
    #Ubuntu 14.04+
    sudo curl -O https://storage.googleapis.com/golang/go1.7.linux-amd64.tar.gz
    sudo tar -xvf go1.7.linux-amd64.tar.gz
    sudo mv go /usr/local
    
    • Add groot to GOPATH
    ln -s [PATH to groot-deploy]/groot-api-gateway [SOME DIRECTORY]/src/github.com/acm-uiuc/groot-api-gateway
    
    • Install groot dependecies
    go get github.com/gorilla/mux
    
    go get github.com/boltdb/bolt
    
    go get github.com/kennygrant/sanitize
    
    go get github.com/acm-uiuc/arbor/server
    
    go get github.com/acm-uiuc/arbor/services
    
    go get github.com/acm-uiuc/arbor/security
    
    go get github.com/acm-uiuc/arbor/proxy
    
    go install github.com/gorilla/mux
    
    go install github.com/boltdb/bolt
    
    go install github.com/kennygrant/sanitize
    
    go install github.com/acm-uiuc/arbor/server
    
    go install github.com/acm-uiuc/arbor/services
    
    go install github.com/acm-uiuc/arbor/security
    
    go install github.com/acm-uiuc/arbor/proxy
    
    • Install packages
    go install github.com/acm-uiuc/groot-api-gateway/config
    
    go install github.com/acm-uiuc/groot-api-gateway/services
    
  • Node

    • Install Software
    #macOS
    brew install node
    #Ubuntu 14.04+  
    sudo apt-get install nodejs
    sudo apt-get install npm
    sudo apt-get install build-essential
    sudo apt-get update
    sudo apt-get install build-essential libssl-dev
    curl -sL https://raw.githubusercontent.com/creationix/nvm/v0.31.0/install.sh -o install_nvm.sh
    bash install_nvm.sh
    source ~/.profile
    nvm install 7.2.0
    nvm use 7.2.0
    sudo npm install -g forever
    
  • Ruby

    • Install Software
    #macOS
    brew install rbenv
    #Ubuntu 14.04+
    sudo apt-get install autoconf bison build-essential libssl-dev libyaml-dev libreadline6-dev zlib1g-dev libncurses5-dev libffi-dev libgdbm3 libgdbm-dev
    git clone https://github.com/rbenv/rbenv.git ~/.rbenv
    echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc (~/.profile / ~/.zshrc)
    echo 'eval "$(rbenv init -)"' >> ~/.bashrc (~/.profile / ~/.zshrc)
    source ~/.bashrc (~/.profile / ~/.zshrc)
    git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build
    
    rbenv install 2.3.1
    rbenv global 2.3.1
    # You may have to restart your terminal session
    gem install bundler
    
  • Python

    • Install Software
    #macOS 
    brew install python 
    #Ubuntu
    sudo apt install python-pip
    
  • MySQL

    • Install Software
    #macOS
    brew install mysql
    mysqladmin -u root password 'yourpassword' 
    mysql.server restart
    #Ubuntu 14.04+
    sudo apt-get install mysql-server
    sudo apt-get install libmysqlclient-dev
    sudo mysqld --intialize
    
    mysql -u root
    mysql> CREATE DATABASE groot_recruiter_service;
    mysql> CREATE DATABASE acm_users;
    mysql> CREATE DATABASE groot_meme_service;
    mysql> CREATE DATABASE groot_quotes_service;
    

Launching the App

  1. Run the dev_spinup.sh script to start up a dev instance of groot (will grab the latest version of each service on github)
  2. Run the prod_spinup.sh script to start a production version of groot (will grab the latest version of each and place them in their respective containers, so you will need docker)

Grabbing latest

repo sync