Skip to content

Standardize build, testing, sphinx doc, minor frontend facelift

Latest
Compare
Choose a tag to compare
@jeff1evesque jeff1evesque released this 12 Jun 02:49
· 131 commits to master since this release
5ba749e

This release involved some major projects, some requiring more effort than others. First, the vagrant development environment was replaced with the rancher orchestration. During this process, we created a single bash script called install_rancher. This script attempts to install a rancher server, then spins up docker containers, contained in a rancher stack. But, it was difficult to generalize this script across multiple different operating systems (i.e. windows 7/10, osx, linux).

Due to limitations of resources, install_rancher was primarily developed within windows 7, and briefly tested on windows 10. In the upcoming milestone, we are likely going to modify this script to work within a flavor for linux. This way we can launch rancher on some internet hosting, with a webhook to the master branch. However, for the time being, users can opt to use the provided docker-compose.yml. If bugs are found with this method, please help us and report a bug. We are pushing towards getting rancher working. However, the docker-compose method should be a stable alternate approach.

The next biggest accomplishment, mostly facilitates our development in upcoming milestones. More specifically, we have optimized our unit testing. This includes splitting up the linting, pytest, as well as frontend unit tests, to be segregated scripts. Essentially, each segment can be run manually in the local development environment. But, most importantly, we have improved the runtime on the travis ci, by running each script as a concurrent job. Previously, the entire travis build would take up to 21+ minutes. We have improved the same build, with additional package installation, to roughly 9 minutes. This also includes the several jest + enzyme frontend unit tests that have already been integrated as npm scripts, intended to be run within the browserify docker container.

Our next accomplishment, really ties in with the first. During the process of dockerizing our vagrant build, we decided to have puppet be the method to provision our containers. Some arguments can be made here. But, ultimately, we like the idea of being able to enforce our environment state, especially if a container could run for an unknown amount of time. Therefore, our puppet modules were completely refactored, by cleverly implementing class variables, as well as hiera configurations. Many times the two choices, provided the same configuration options. These were put to good use, in the corresponding dockerfiles. On the same note, our pytests have been configured to allow users to choose, whether to build an environment based on local dockerfiles, or the equivalent dockerhub containers.

Lastly, we did some minor frontend facelifting, as well as update the scikit-learn library to 0.19.1. The frontend improvements include a solid top navigation bar. When a user logs into the application, a black solid bar will exist at the top of the screen, and include a series of links, associated to the users account. Furthermore, we integrated bootstrap, to ensure the menu bar was responsive, as well as a couple of our other pages. We also added some cool range-sliders to our existing model_generate page, allowing users to slide a value, for a corresponding penalty, or gamma values, when generating an svm, or svr model. Then, we added a frontpage animation, at least until we have a better design. The animation was a pretty cool D3JS. However, it was a tedious process to convert the syntax to be reactjs compliant.

We have focused largely on a standardizing the environment, and attempting to choose a set of technologies for this overall project. So, it's about time to bridge the various algorithms with either a web-interface, or a rest api endpoint. Now, we'll attempt to interface a variety of additional algorithms in the upcoming milestones. However, this will likely involve refactoring our database(s), so users can interface with proper permissions, and abilities to perform particular actions associated with the new algorithms.

Another thing: we have improved our sphinx documentation, and launched on github pages: