bigflow
bigflow copied to clipboard
Continuous Integration Support
Continuous integration is required for bigflow, and we should have a system to support continuos integration.
Maybe we can use travis-ci.org, or teamcity, or we can set up a jenkins at BCC (Baidu Cloud Compute)?
I think we can have both...
TeamCity(https://www.jetbrains.com/teamcity/) is free for a small project. The professional server license(which is free) supports up to:
- 20 build configurations
- full access to all product features
- support via forum and issue tracker
- 3 build agents
which should be sufficient for the development of bigflow.
TeamCity also works nicely with IDEs came from JetBrains.
The only downside is that we have to run teamcity somewhere and requires operating.
I've already set travis-ci up, and it works just fine.
With the help of the travis-ci, now we can run our ci job at every commit on master & every pull request. If any code committed to the master, github pages will be generated to this page, and a release file will be uploaded to here.
But at this moment, there are 3 more things to do:
- A spark cluster is required to daily run the ci-test on spark.
- The job should be faster by refining the build with caches.
- A quicker job to build documents is required. If there is no big change, the docs should be built in a few minutes, not about one hour.
I was so naive... travis-ci.org's limitation of timeout is 50min, while travis-ci.com's limitation is 120min.
On travis-ci.com, the ci tests ran perfect in about one hour, but now on travis-ci.org it just ... not work.
So speeding up the build becomes more important than before.
Well you could use https://en.m.wikipedia.org/wiki/Ccache for massively speeding up the builds, or the mozilla fork (which support rust too) https://github.com/mozilla/sscache. You could also in complement, use the meson build system : http://mesonbuild.com/
Also, HS : it's a nice to have (for security and stability reason) feature : https://github.com/Microsoft/checkedc Even if using Rust code would still be the best way.