GDC CI

wjoe invalid at example.com
Mon Sep 7 10:41:50 UTC 2020


On Monday, 7 September 2020 at 09:14:08 UTC, Iain Buclaw wrote:
> On Saturday, 5 September 2020 at 21:14:28 UTC, Iain Buclaw 
> wrote:
>> On Saturday, 5 September 2020 at 11:23:09 UTC, wjoe wrote:
>>> On Saturday, 5 September 2020 at 10:25:28 UTC, Johannes Pfau 
>>> wrote:
>>>>
>>>> The main difficulty in setting up CI for GDC is that we 
>>>> can't simply put CI configuration files in the toplevel 
>>>> folder, as that folder is under GCC's control. For CI which 
>>>> allows you to keep the configuration out of the 
>>>> repositories, this is not a problem. But for those requiring 
>>>> certain files in the top-level folder, it's more complicated.
>>>>
>>> How's upstream GCC doing CI ?
>>
>> They aren't.  Or rather, other people are building every so 
>> often, or have their own scripts that build every single 
>> commit, and then post test results on the mailing list (i.e: 
>> https://gcc.gnu.org/pipermail/gcc-testresults/2020-September/thread.html)
>
> So when it comes to CI, there are two/three use cases that need 
> to be considered.
>
> 1. Testing a changes to D or libphobos prior to committing to 
> gcc mainline/branch.
>
> 2. Testing the mainline (master) branch, either periodically, 
> every commit, or after a specific commit (such as the daily 
> bump).
>
> 3. Testing the release branches of gcc (releases/gcc-9, 
> releases/gcc-10, ...).
>
> I am least bothered by having [1] covered.  I have enough faith 
> that people who send patches have at least done some level of 
> due diligence of testing their changes prior to submitting.  So 
> I think the focus should only be on the frequent testing of 
> mainline, and infrequent testing of release branches.
>
> If Cirrus has built-in periodic scheduling (without the need 
> for config files, or hooks added to the git repository), and 
> you can point it to GCC's git (or the GitHub git-mirror/gcc) 
> then that could be fine.  CI scripts still need to live in a 
> separate repository pulled in with the build.
>
> Iain.

Cirrus CI currently only supports GitHub projects. Therefore the 
Dockerfile needs to be hosted there. But nowhere it says that you 
can't clone any arbitrary repository via a setup script.

Options I can think of are:
A) A Dockerfile for each case in (1.,) 2. and 3., or
B) A docker container which provides the environment to build GCC 
and a (Cirrus) CI config which defines the tasks to cover (1.,) 
2. and 3.

A) sounds like a lot of duplication so I'm in favor of B)

Cirrus CI also provides a Docker Builder VM which can build and 
publish docker containers.


More information about the D.gnu mailing list