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