[GHC DevOps Group] FreeBSD in Tier 1

Boespflug, Mathieu m at tweag.io
Wed Oct 11 11:32:34 UTC 2017


Hi Simon,

> I'm a little worried about having multiple different CI solutions to cover
> the platforms we need. The proposal is already to use AppVeyor to cover
> Windows, so is it possible to have any kind of unification in the ways that
> the different CI mechanisms communicate their results? i.e. will we get a
> single type of "build failed" email with aggregate results, a single build
> results UI in GitHub, and so on, or will these all be different?

In principle what you have in the CI config is just the specification
of the build environment, together with calls to entry points to each
of the phases you care about (building GHC, running the test suite,
copying binary distributions to some stable location), or indeed just
a single call to a single entry point if you just want to build, test
and prepare build artifacts in one go.

So the entirety of the meat of each step should be factored out into
one (or several) scripts common to all platforms.

Here's an example CircleCI script that deals with two platforms (linux
+ cross-compile freebsd):

https://github.com/tweag/ghc/blob/circleci-workflows/.circleci/config.yml

As you can see, most of what it does is specifiy the build environment
(which we have to do separately for each platform anyways). The calls
to ./validate could be made shorter still by modifying ./validate.

As for notifications, Appveyor will send its own email (though we can
tell it not to of course). That's a tad unfortunate, I agree. But I
would hope that's not a big hardship. At any rate failures are all
presented in a unified way as annotations on the GitHub PR.


More information about the Ghc-devops-group mailing list