Thinktank: CI's, compiler lists, and project automation

Nick Sabalausky (Abscissa) SeeWebsiteToContactMe at semitwist.com
Sat Mar 3 06:39:42 UTC 2018


On 03/02/2018 02:24 AM, Jacob Carlborg wrote:
> 
> Travis CI allows you to specify a D compiler in the following ways:
> 
> * <compiler> - the latest version of the specified compiler
> * <compiler>-beta - the latest beta
> * <compiler>-nightly - the nightly build
> * <compiler>-<version> - a specific version of the compiler
> 
> Where <compiler> is "dmd", "ldc" or "gdc".
> 
> Combine the above with a scheduled build that builds once every day 
> you're pretty well covered. For an example, see the Travis CI 
> configuration for DStep [1]. I'm building the latest version of DMD and 
> LDC on Linux and macOS, but the betas and nightly are only built on 
> Linux, due the the limited resources of macOS builds on Travis CI.
> 
> [1] https://github.com/jacob-carlborg/dstep/blob/master/.travis.yml
> 

Certainly a possible approach, but has downsides:

- Maybe there's a simple setting I've overlooked, but when a build job 
fails on travis, the author does not get proactively notified. The 
author only finds out next time they go into travis. (I've been 
surprised many times to discover failed builds that had occured several 
days ago, or more.)

- A project author will still need to: 1. Actively notice new compiler 
releases and 2. Manually update the .travis.yml files for each of their 
projects. Certainly there's room for more automation here.

- Except when "nightly" is desired, this leads to many unnecessary 
redundant builds/tests, especially across all the various D projects. 
(Though I don't know how much that would matter on travis. Maybe it'd be 
a drop in their bucket.)


More information about the Digitalmars-d mailing list