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

Seb seb at wilzba.ch
Tue Mar 13 09:51:20 UTC 2018


On Friday, 2 March 2018 at 06:07:25 UTC, Nick Sabalausky 
(Abscissa) wrote:
> (I'm posting this here instead of D.learn because it isn't 
> really a "How to do XYZ in D?", but rather to invite discussion 
> on high-level solutions to a problem.)
>
> Here's a common problem:
>
> 1. A project (ex, some library) uses travis-ci (and/or other) 
> to ensure compatibility with a range of compiler versions. The 
> travis configuration file includes a manually-curated list of 
> compiler versions.
>
> 2. CI tests are triggered by new commits/merges/PRs in the 
> project.
>
> 3. New compiler versions are released.

Well, just for the record - imho adding your project to the 
project tester is the best way to prevent regressions a priori: 
add your project to the Project Tester (ci.dlang.io).

The Project Tester runs the testsuite of currently ~40 packages 
on every PR at dmd, druntime, phobos, tools and dub
An example: 
https://ci.dlang.io/blue/organizations/jenkins/dlang-org%2Fphobos/detail/PR-6259/2/pipeline

Imho it's te best way as a regression is caught _before_ the 
change is merged and the need for the interaction is on the side 
of the person who would introduce the regression (i.e. the one 
understanding the change).

New projects can be added either by making a PR to the file to 
[1] or pinging me.

[1] 
https://github.com/dlang/ci/blob/master/vars/runPipeline.groovy


> but there are still limitations and downsides (ex: D tester has 
> limited resources

FWIW it's not so limited and highly parallizable. It's already 
configured to automatically create new temporary worker machines 
in the Google Cloud [2] whenever there's more traffic/demand.
Considering the upsides of knowing that your project can _never 
ever_break again is so huge that imho even if more workers are 
needed, it's well-justified as there's quite a net gain.

[2] It currently uses the cheap preemptible VM machines in the 
Google Cloud 
(https://cloud.google.com/compute/docs/instances/preemptible), 
but Martin plans to migrate to Hetzner soon as there are too many 
problems with those VMs.


More information about the Digitalmars-d mailing list