dlang / project-ideas

Collection of impactful projects in the D ecosystem
36 stars 12 forks source link

Unify CI system #98

Closed RazvanN7 closed 5 months ago

RazvanN7 commented 1 year ago

Description

D has been using the auto-tester for a very long time (it was created in 2006 for D) and it has become a crucial part of D's infrastructure as it allows testing a PR on four platforms (Windows, Linux, OSX, FreeBSD) and 9 configurations (x86 <-> x86_64). However, as only one person has access to it, it is very hard for the community to make changes to it and integrate newer testing strategies which is why over the time many other CI systems have been added (CircleCi, SemaphoreCI, Azure, Jenkins ...). A few years back, the project tester (the CI system which checks out the ~top50 dub projects and runs their test suite on every pull request) has been moved to Buildkite and we have made excellent experiences with it. In short, it allows to setup agents anywhere and connect to a central build server. This allows to use cheap or university resources, but also unavailable resources. For example, FreeBSD isn't available on most CI systems. As the aggregation of various CI systems leads to a lot of problems (frequent failures, no access, knowledge separation, upgrade issues), the goal of this project would be to unify all systems, s.t. all of them are run on Buildkite.

What are rough milestones of this project?

There are a few side dependencies:

Extensions:

How does this project help the D community?

A single CI system means that we can take full advantage of the individual features (e.g. Buildkite supports automatic retries of failing builds), no problems with CI machine access (you only need to be able to access one system, not 7), less confusion and missing knowledge (currently only very few people understand how all systems work). Moreover, being a single system will make it a lot more reliable and easier to extend (e.g. DragonFlyBSD testing or Musl tests). However, most importantly we will be able to do upgrades and changes to the system a lot easier (e.g. upgrading from Debian 8 to 9, upgrade gcc, llvm, ...).

Recommended Skills

What can students expect to get out of doing this project?

As we currently use almost all popular CI services, the student will aggregate a lot of experience with them which very likely will help him for future jobs as well. Moreover, he will learn more DevOps skills and gather experience on best-practices for reliable CI systems.

Point of contact

@Geod24 @dkorpel @maxhaton

References

wilzbach commented 1 year ago

I'm sorry, but I have little time these days and can't be a point of contact for this.

RazvanN7 commented 1 year ago

Ok, I deleted you, thanks!