On 9 July 2015 at 21:09, Martin Nowak via dmd-internals <dmd-internals@puremagic.com> wrote:
On 07/09/2015 03:45 PM, Iain Buclaw wrote:
> Recently got on-board with Semaphore-CI (better platform than
> Travis-CI IMO)

Well adding D to the list of supported PLs always helps our visibility,
but then again there is way more important stuff to do than adding a
Travis-CI alternative.
It's also an endless job to add support for all CI systems.
http://www.slant.co/topics/186/compare/~circleci_vs_shippable_vs_travis


It's more that Travis' constraints are more harmful and stopped me getting any work done.

- The 40 minute time limit on build+tests aren't so bad, you can achieve that with gdc if you build with parallelism, except that...
- The memory limit is capped at 3GB, meaning that builds will randomly die depending on whether or not two (or more) large sources are compiled at the same time.
- Infact, just linking the compiler is enough to hit the memory cap, meaning that wonderful build and linker hacks are needed just to keep resources down.
- There's also a timeout if 10 minutes go by without any logging (the testsuite typically logs nothing except for failures, and may take up to 15 minutes to run), that's fine, I can just turn on verbose logging, except that...
- Anything over the 1000th line is discarded by the build.

It took me about 30 attempts to build gdc + run testsuite on their platform.  Even then it failed twice every three builds for no reason other than bad races with parallel builds.

Conclusion: Travis is no good for large and/or serious projects.

Having a quick look, it appears that I'll run into similar problems with CircleCI (4GB hard memory limit, build/tests are timed out afer 180 seconds of silence) and Shippable (Again with 4GB memory, build/tests must complete in 60 minutes, cannot be silent for more than 10 minutes).

I actually had a good rant about this last month, because I can no longer wait for the broken auto-tester to start working on all platforms, but all alternates are useless offers for medium to large open source projects.

So it was quite a relief to find out that Semaphore offers:
- 4GB "soft" limit, doesn't actually kill your build/tests if you sometimes exceed.
- 60 minute limit "per command", so you could have 24 commands that each take 59 minutes and things will continue to build.

Everything I've thrown at it, it has consumed with delight and succeeded.  This makes me a happy user.

Iain.