Setting up Own CI server

I’ve been using AppVeyor and Travis for years now.
It is super simple, since PkgDev does ll the work of generating the configs for your.

I think I would like to setup my own CI server, on one of my spare OpenStack instances.

For the sake of reproduceable science, I would like my results to be checked everytime I push a commit to the package.
Unfortunately, that will take hours to days because it involved training a machine learnt model.

I don’t want to spend all my AppVeyor/Travis time on that.
App Veyor won’t run anything taking more than 60 minutes.
Travis has no timeout, but it is shared between all my projects,
Which would basically mean I would loose all CI.

Plus on my own VM I could dedicate more cores to it, and so have it done faster.

I was thinking about only running those tests when an enviroment variable is set.
And then having a second CI server, on my own hardware, that does have that environment variable set.

Has anyone set up their own CI server for julia code?
Any recommendations as to what to use?

2 Likes

We are entertaining the same idea for similar reasons (reproducible research, continuous integration, tests can take days), and the first framework we plan to explore is Buildbot, but if that does not work for us then trac-bitten. We briefly looked at self-hosting Travis but that appears to be quite complicated to setup.

I don’t think you need a VM, they use lightweight containers.

I have my own GPU CI set-up, based on Buildbot, with the configuration available here. Builds Julia upon commits to the release branch (repository monitor), and packages when there’s a PR (webhook), or when Julia has been updated. Pretty site-specific, but you should be able to salvage a lot from it.

If I were to start from stratch, I would probably still stick with Buildbot, but try out something like buildbot_travis to support .travis.yml-like syntax within the repo, vs. a centralized configuration as it is now.

2 Likes

I have a OpenStack cloud setup (Think amazon AWS),
that I get from the Australian goverment as part of the national research infrastructure.

VMs are easy for me.
So I would potentially end up setting up a VM to run this lightweight contained in.