DEV Community

Cover image for What adding CI to 30 projects revealed
Gabor Szabo
Gabor Szabo

Posted on

What adding CI to 30 projects revealed

In the last couple of weeks I have been trying to setup a CI system to a number of open source projects.

A few things I learned

  • Some Open Source developer don't have public Version Control System (Based on the replies to my emails some of them might not use any version control system at all.)

  • Some say they have VCS, but don't want to link to it. They expect potential contributors to send patches in email.

  • Quite a few don't really know what CI can give them and were not interested.

A few thing that setting up CI helped us reveal

I sent about 20-30 pull requests configuring GitHub Actions, the integrated CI system GitHub provides to various Open Source projects.

Here are the things we found

  • Developer has forgot to add file to git repository and so tests could not run neither on CI system nor on someone else computer.
  • Developer forgot to push out some changes.
  • Packaging code (build script) relies on private code that is not released yet.
  • Packaging code (build script) relies on local configuration that is not committed (and should not be committed) to git as it includes a password.
  • One of the packages had a circular requirement chain so it could not be installed at all.
  • Test script failed without local configuration.
  • Some of the dependencies were not declared in the distribution.

So in case you are wondering if it is worth going through the process and setting up a CI system, these are just a few things in what a CI system can help your project.

Would you like to set up CI but don't know how?

If you have an Open Source Project, I'd be happy to help you free of charge.

If you have a closed source project, then I can offer this help as a service.

Top comments (1)

drhyde profile image
David Cantrell • Edited

In one of my projects I'm mucking about with the build system to make it install slightly differently depending on a build-time switch. Being able to build, test, install, and then test the installation on clean machines, without having to keep cleaning up my own machine after every failure, is an absolute lifeline.