Alternatives to travis-ci

Petar Petar
Fri Dec 11 10:59:30 UTC 2020


On Thursday, 10 December 2020 at 16:30:43 UTC, Basile B. wrote:
> On Thursday, 10 December 2020 at 11:52:41 UTC, M.M. wrote:
>> On Thursday, 10 December 2020 at 11:42:41 UTC, Mathias LANG 
>> wrote:
>>> As many of you might be aware already, travis-ci is killing 
>>> their open-source plans.
>>> They haven't sunset it yet,, but they introduced a set of 
>>> restrictions that makes them completely uncompetitive and 
>>> impractical to use compared to other services on the market.
>>>
>>> [...]
>>
>> Thank you for sharing and suggesting alternatives. Is GitLab 
>> CI similarly easy/friendly/suitable for D? Does anyone use it?
>
> Gitlab.org (so not self-hosted version) CI is only free for 
> linux. osx and windows runners require to buy "minutes".
>
> Then it is as suitable a any other CI service that supports 
> docker images, meaning that D is not supported natively (but 
> really the docker image solve this issue).
>
> On top of that you have facilities to release binaries, deploy 
> packages or publish a static website.
>
> It has always been stable and reliable for me but I run it 
> let's say 5 times per day top.
>
> To make you an idea, see https://gitlab.com/basile.b/dlang-ci.

And for a bit more advanced example, at work we have a project 
that includes two micro-services written in D and hosted on 
GitLab with the following features / techniques:
* Using a custom docker+buildx docker image: [0]
* Mono-repo project organization via dub subpackages
* Each service is built and deployed as a separate runner image, 
but the build dependencies are shared in a common dependencies 
builder image
* We use GitLab Container Registry to push images and to pull 
cache from
* Multi-stage Dockerfile build which has caching of dub 
dependencies and separate builder and run-time environments [1]
* docker buildx bake is used to automate the docker image build, 
tag and push processes [2]
* docker buildx bake targets + GitLab CI matrix allows defining 
jobs for each micro-service docker image without repetition [3]

I want to thank the LDC team and especially Mathias LANG for 
their work on making D on Alpine docker images possible.

[0]: 
https://gitlab.com/jarvis-network/base/container-images/docker-buildx

[1]: 
https://gitlab.com/jarvis-network/apps/exchange/price-feed/-/blob/1fa5624964165b34b987ede0728eb71bdb59d403/Dockerfile

[2]: 
https://gitlab.com/jarvis-network/apps/exchange/price-feed/-/blob/1fa5624964165b34b987ede0728eb71bdb59d403/docker-bake.hcl

[3]: 
https://gitlab.com/jarvis-network/apps/exchange/price-feed/-/blob/1fa5624964165b34b987ede0728eb71bdb59d403/.gitlab-ci.yml


More information about the Digitalmars-d mailing list