From: jloup Date: Wed, 14 Feb 2018 16:55:09 +0000 (+0100) Subject: update README. X-Git-Tag: v0.0.1 X-Git-Url: https://git.immae.eu/?p=perso%2FImmae%2FProjets%2FCryptomonnaies%2FCryptoportfolio%2FFront.git;a=commitdiff_plain;h=3602fbf8412d69900d793a963c8e774f487f5e45 update README. --- diff --git a/README.md b/README.md index 84e6304..4c38943 100644 --- a/README.md +++ b/README.md @@ -1 +1,120 @@ -# Crypto +# Cryptoportfolio app + +Back and front end for cryptoportfolio project. + +Server binaries and webapp files are shipped to Github. No need to install dev dependencies to deploy it. All you need is [ansible](http://docs.ansible.com/ansible/latest/intro_installation.html#installing-the-control-machine) + +- [Deploy](#deploy) : deploy server binaries and webapp archive to a server with ansible +- [Server](#server) : server written in golang +- [Webapp](#webapp) : JS (React) +- [Release](#release) : release server binaries and webapp archive to github with ansible. + +Dir tree +``` +|- api/*.go api endpoints +|- db/*.go database models +|- cmd/ +| |--- app/ +| |-- Makefile +| |-- conf.toml server configuration file (dev) +| |-- main.go server entry point +| |--- ansible/ +| |-- ansible.cfg +| |-- hosts +| |-- requirements.yml +| |-- conf.toml.j2 server configuration file (prod) +| |-- cryptoportfolio-app.j2 server systemd file +| |-- vars.yml playbook variables (vault) +| |-- release.yml release playbook +| |-- deploy.yml deploy playbook +| |--- web/ +| |-- env/ app environments +| |-- dev.env +| |-- prod.env +| |-- js/ js source code +| |-- static/ index.html and style.css +``` +## Server +#### Install +##### Golang installation (if needed) +1. Download right package at [https://golang.org/dl](https://golang.org/dl) +2. Install it +``` +tar -C /usr/local -xzf go$VERSION.$OS-$ARCH.tar.gz + +export PATH=$PATH:/usr/local/go/bin +``` +#### Fetch dependencies +Simply run at the root of project : +``` + make install +``` +#### Run locally +You need postgres running on `localhost:5432` and the following setup: +``` +CREATE USER cryptoportfolio; +ALTER USER cryptoportfolio WITH ENCRYPTED PASSWORD 'cryptoporfolio-dev'; +ALTER ROLE cryptoportfolio WITH CREATEDB ; +CREATE DATABASE cryptoportfolio OWNER cryptoportfolio; +``` +Then run the app in cmd/app: +``` + cd cmd/app + make run +``` +## Webapp +#### Install +You will need `npm`, `node` and `yarn`, then: +``` + cd cmd/web + make install +``` + +#### Build local webapp +``` + make static ENV=dev +``` +Files are now ready to be served by server. + +## Ansible install requirements +``` +cd cmd/ansible + +ansible-galaxy install -r requirements.yml +``` +## Releasing +To release, you need to have all dev environments setup for server and webapp. The token used to push to Github is in cmd/ansible/vars.yml. You need a password to decrypt this file. Ask me. You need to store this password in a file such as `~/.vault_cryptoportfolio_pass.txt` + +You can then run the release.yml playbook, don't forget to provide a the release version : +``` + cd cmd/ansible + + ansible-playbook release.yml --extra-vars "version=X.X.X" --vault-password-file=~/.vault_cryptoportfolio_pass.txt +``` +## Deploy +change `hosts` file : +``` +[jloup-home] +jlj.am + +[jloup-home:vars] + ansible_port=21 + ansible_user=ansible-deploy # This user will be used to carry out operation on remote machine + # To make it work, this user should not be prompted for password when sudo + # else you need to pass --ask-sudo-pass when running playbook + + app_user=jloup # user that will run the app service + app_domain=jlj.am + + postgres_database=cryptoportfolio + postgres_user=cryptoportfolio + postgres_password=cryptoportfolio-dev + + linux_arch=386 # your machine arch. should be one if [386, amd64] +``` + +``` + cd cmd/ansible + + ansible-playbook deploy.yml --extra-vars "version=X.X.X" --vault-password-file=~/.vault_cryptoportfolio_pass.txt +```