/GameOfLifeEnterprise

Compliments GameOfLifeNoLibraries, but a production ready version with all the focus on tooling and a continuous delivery pipeline.

Primary LanguageTypeScript

GameOfLifeEnterprise

Compliments GameOfLifeNoLibraries
But a production ready version with all the focus on tooling and a continuous delivery pipeline.

CircleCI

Technologies used

Source Code

JavaScript type safety and compile checking using:

Import module features and generation using:

Module loading in the browser using:

Commands

  • npm install
  • npm run build
  • npm run browserify

Testing

Behaviour driven tests written using:

Test's run in a browser enviroment using:

Code coverage reporting by Istanbul

Commands

  • npm run test
  • npm run test-single

Runtime Enviroment

Content served by

Commands

Should be running on http://localhost:42420/ afterwards

  • npm run start

Containerization

App and all its dependancies packaged into a rerunable container using.

On operating system

Image stored in Dockerhub
https://hub.docker.com/r/jamesharrisonza/gameoflifeproduction/

Commands

Using image and container tag/name: gol
Should be running on http://localhost:42420/ afterwards

  • docker build -t gol .
  • docker run -d --rm --name gol -p 42420:42420 gol
  • docker run -it gol /bin/sh

Or even more simple

  • docker-compose build
  • docker-compose up

Continuous delivery

Runs tests as code is committed to the master branch. On test success: Builds a new Docker image for my app tagged with the last checkin SHA. Pushes the new image to my Dockerhub repo. On build success: Connect to my cluster and initiates a rolling update based off the new docker image and tag.

Hosting

This project was previously hosted on Google's Cloud Platform and was using Kubernetes to orchestrate the containers.
My free credits ran out but you can see the commands commented out in this Readme and the CircleCI config.

Currently the Docker containers are spun up and hosted on
Heroku Cloud Application Platform

Which has a great free tier for project apps.

ToDo

  • Build step to copy css files to public folder, then git ignore public folder.
  • Investigate new Chrome module loading support in the browser which will let me remove commonjs and browserfy.
  • JS Minification
  • Google analytics