[ci] Update design proposal
-Goal: Automate the builds and validation of changes
+# Goal: Automate the builds and validation of changes
+
+Be fast and simple:
+
+* Cloud based
+* 100% automated
+* Below 5 minutes for basic unit tests (API and UI)
+* Prepare the ground for other components
+* Eventually lock master branch
## What to validate
@@ -7,7 +15,7 @@ Goal: Automate the builds and validation of changes
Similar to the [Docker Hue](/tools/docker/hue). Currently doing only Python 2, but we should test the Python 3 build and run the tests.
* Python 2.7
-* Python 3
+* Python 3.5+
The docker images could be forked for QA and comes with a series of flags.
@@ -15,7 +23,7 @@ The docker images could be forked for QA and comes with a series of flags.
By updating the makefile to build the new [Website](/docs/docs-site). Would need to install Hugo and [build it](http://cloudera.github.io/hue/latest/developer/development/#documentation).
-Step 2 would be to setup so that the doc get [published automatically](https://docs.travis-ci.com/user/deployment/pages/).
+Step 2 would be to setup so that the documentation would get published automatically.
### Release
@@ -49,20 +57,26 @@ Those tests would run on:
Several areas to track:
-* js and pylint
-* code coverage
+* js
+* linting (and missing tests, warnings added)
+* Coverage
+* MyPy
# Proposal
Investigate:
+* Cloud based: https://circleci.com currently (free for open source, easy to use)
* Docker based CI (e.g. [CI in Docker](https://itnext.io/shift-your-ci-scripts-to-docker-build-92453bca9f75)...)
* [Tox](https://tox.readthedocs.io)
-* Pypi package
+* Build and Makefile refactoring with standard `requirement.txt` and pypy package
+* git clone under 10s
+* Unit tests under 5min
Starting with these basic steps:
-* Running an hourly master build if there are changes
-* Report the runs similarly to Jenkins. Pick one of Jenkins, Travis CI, Github Action...
+* Report the runs via UI and github checks
* Split the tests into several categories
-* Add the unit tests only to the hourly run
+ * unit Python
+ * integrations
+ * js
