GDC CI

Iain Buclaw ibuclaw at gdcproject.org
Tue Sep 8 20:03:03 UTC 2020


On Tuesday, 8 September 2020 at 16:44:39 UTC, wjoe wrote:
> On Tuesday, 8 September 2020 at 14:18:10 UTC, Iain Buclaw wrote:
>> On Tuesday, 8 September 2020 at 13:50:26 UTC, wjoe wrote:
>>> On Monday, 7 September 2020 at 10:41:50 UTC, wjoe wrote:
>>>>
>>>> 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.
>>>
>>>
>>> Small update.
>>> Option A) isn't possible with Cirrus CI because the check-out 
>>> phase takes about 54 minutes on average and building the 
>>> container about 6 minutes.
>>> Then the task is terminated on the 60 minutes mark (the 
>>> default timeout) before it even starts the GCC configuration 
>>> phase.
>>>
>>> The environment is 4GB RAM and dual CPU with 16 threads.
>>
>> It is just doing a plain git clone?  Can you control whether 
>> checkout is done using --single-branch or --depth?
>
> This update was about a build via the zero configuration 
> feature by just providing a Dockerfile.
> Just to see if it works but it didn't.
> I didn't find a git clone command in the log so I couldn't 
> really tell.
>
> A lot of things, such as RAM, timeout, custom git checkouts, 
> custom command to build a docker container, environment 
> variables, etc., can be configured in a cirrus configuration 
> file.
> So what I'm doing now is making a .cirrus.yml with a custom 
> checkout, a shallow clone with --depth=1 of the master-ci 
> branch should do the trick, using the container I made for 
> building gcc.
> Then I'll adapt the build-ci script for use with Cirrus-CI.
> E.g. the dependency installation for instance isn't necessary 
> by using a container that already provides all those.
>
> I'm not sure if Johannes was referring to that script being a 
> bad idea in hindsight. If so it's not a problem to define the 
> necessary steps in the cirrus config.

Well the ci script in the repo [1] should be used as a baseline, 
if not in its entirety as it's been used on enough to work in 
many environments, whether building a native or cross compiler.

At the very least, you just need to set-up the environment() 
using whatever variables Cirrus provides and it'll just go and 
run.

I think I do have a copy somewhere that adds support for running 
it locally without any dependencies on a specific CI.

[1] 
https://github.com/D-Programming-GDC/gcc/blob/master-ci/buildci.sh


More information about the D.gnu mailing list