CI: Why Travis & Circle

Petar Petar
Sat Nov 16 09:07:45 UTC 2019


On Thursday, 14 November 2019 at 17:32:27 UTC, jmh530 wrote:
> On Thursday, 14 November 2019 at 17:06:36 UTC, Andre Pany wrote:
>> [snip]
>>
>> With the public availability of Github Actions I highly 
>> recommend it if you have open source project on Github. If is 
>> free and works well with D and Dub.
>>
>> Kind regards
>> Andre
>
> I'm not that familiar with Github Actions, but I should get 
> more familiar with it.
>
> But my broader question is why both? Don't they both do largely 
> the same things?
>
> I was motivated to ask this by looking at the mir repositories, 
> which have both.
> https://github.com/libmir/mir

Most likely the reason is parallelism. Every CI service offers a 
limited amount of agents that can run in parallel, which limits 
the number of test matrix combinations that you can run in a 
reasonable amount of time. For example, many of the major D 
projects are tested across different OSes and several versions of 
D compilers. Additionally some CIs are faster than others. In my 
experience CircleCI is faster than TravisCI by a large margin.

Another reason is the different types of CI agents. Traditionally 
Travis CI was the first CI service that offered macOS agents for 
free for open-source projects. Now they have experimental Windows 
support as well. On the other hand Travis uses VMs which are 
often noticeably slower to boot than containers. (I think they 
also offered containers for a while, but for some reason they 
deprecated this offering).
CircleCI on the other hand has a really good support for 
containers and in my experience they start in about 1-2s after a 
commit is pushed (whereas VMs can take between anywhere between 
20-60s.

As Andre mentioned, GitHub Actions is a new player in the space, 
which offers an extremely generous amount of compute for public 
repos, courtesy of Microsoft Azure.
(Actually I think they offer exactly the same for public repos as 
what Azure Pipelines offers). However, GitHub Actions has the 
most catch up to do, if you exclude their raw compute power. 
Their UI is extremely bare bones and the configurability is 
lacking behind both CircleCI, SemaphoreCI and even Azure 
Pipelines. However, for most D projects what they offer should be 
a perfect fit.

As for Mir specifically, just check what commands are run by 
circle.yml and .travis.yml and you'll be able to understand 
whether there is actually a need for using multiple CI services:
https://github.com/libmir/mir/blob/master/circle.yml
https://github.com/libmir/mir/blob/master/.travis.yml

I may be wrong, but it seams that they should be able to 
consolidate their testing into just one CI service, but I would 
recommend holding off trying GitHub Actions for now and to go 
with Azure Pipelines, as GitHub's offering is not very stable 
yet. For example two days, due to some change on their side their 
CI completely stopped working on a public repo of mine. After 
researching I found that other people had similar issues (e.g. 
[1]), but fortunately, after contacting their support the issue 
was resolved one day later. In comparison, Circle CI, Semaphore 
CI and Azure Pipelines have been much more rock-solid in my 
experience.

[1]: 
https://github.community/t5/GitHub-Actions/GitHub-Actions-workflows-can-t-be-executed-on-this-repository/td-p/38153


More information about the Digitalmars-d-learn mailing list