Ask HN: Which CI/CD do you use for a monorepo?
I am looking or the simplest (ideally YAML free) CI/CD that uses either Dockerfiles, worse YAML files to trigger builds.
I would like to place a file to a folder that has specific instructions how to build the projects.
Example:
- repo/backend/api
- repo/frontend/www
- repo/frontend/app
I would like to have 3 files that define how each folder builds. Api might be Python and deployed to arm64, www is static html, css, etc. deployed to a CDN.
I do not understand why the major CI/CD vendors have a convoluted YAML hell with custom images and commands when we have Docker for 10 years. In last 10 years non-of the CI/CD vendors I know of created a platform where I can use a Dockerfile that references a public or private image that I can use to build my project. At this stage I am only AWS Codebuild that allows the use of Docker image from ECR but I still need to do YAML.
Is there a company that has a super simple CI/CD that would be 5 minutes to set up?
We have wasted couple of weeks on CircleCI and whenever we need to change it is a major pain and it takes hours to find out which YAML line has an incorrect indentation or why a certain tool breaks when used on a "orb".
I am just getting tired of these.
Comments
You want to take a look at Earthly. https://earthly.dev/
This gives you a mix of docker and a makefile.
The best bit is you can test your pipeline locally and you are vendor agnostic.
I'm using it here https://github.com/purton-tech/cloak
I guess this is exactly what I was looking for. Thanks a million!
You can try out SparrowCI (https://github.com/melezhik/SparrowCI) -it’s simple and could be self-hosted. It builds on docker images, so if you spin up an SparrowCI on arm64 host you should be probably good. It’s not possible to have 3 separate CI pipelines but you can organize repo pipeline in such a way that it’s split by 3 or many tasks to cover different parts of your system.
… but probably, if you need to build a Docker image SparrowCI is not a fit, however there is probably a simple fix to allow to do that …
Hi there! Dagger (https://dagger.io) contributor here. Looks like Dagger could be a very nice fit for what you're looking for; it allows you to define your pipelines in either Go, Python or Typescript/JavaScript (more languages to come) as well as targeting multiple CPU platforms. Regarding monorepos, here's a link on how Dagger makes that experience quite nice: https://youtu.be/vJfoyN77fo0
If you have any questions or need any further help, happy to connect in our discord server!
Cheers!
i’ve liked github actions for this. i used it on WebReducer (https://github.com/zekenie/web-reducer)
Does it work with Arm?