Ask HN: Flexible, lightweight build automation/CI tool?
I‘ve recently set up Jenkins to continuously build and test a Mac app (Postico), and it‘s not been a pleasant experience. Everything is poorly documented, you constantly need to switch between different paradigms (point and click interface, procedural pipelines, declarative pipelines), the API is atrocious, and I haven‘t figured out yet how to configure the dashboard.
So I‘ve started to look for more lightweight and flexible alternatives. My build process consists of a couple of shell scripts (bash), some ruby scripts, and even a python script. The individual parts work well, I only need something to tie it all together and display status.
It can‘t run on docker because the app is built with Xcode, but I do use docker to start up test servers that our unit tests run against.
I‘ve been looking at buildbot, and it looks like it does what I want. Does anybody have any experience with it?
I‘ve also considered using a general purpose task scheduling system, but I don‘t know anything about that space. Does anybody have good recommendations?
43 comments
[ 4.7 ms ] story [ 102 ms ] threadI've also used Bitrise in the past, it also has Mac OS and Linux machines where you can run your builds on.
> Ick2 will become a CI system. It is not there yet. It is not even ALPHA level yet.
It doesn't even have a website, just a repository browser.
This looks like a toy or side project.
Also, doesn’t Travis CI have macOS support ?
One can still run Concourse on a Mac Mini if one chooses, not that much extra work. This is the simplest solution but you will still need XCode Server last time I checked (been a while). I'm sure there are ways to hack around it, just a matter of time vs money question.
Both Travis CI and Circle CI offer Mac builds, so if one is willing to spend some money, that's an option.
Having had to run my own CI infrastructure, I'd rather pay someone else to deal with it. Especially if your deploys are tied to it, as once it breaks, and it will do it, your entire pipeline is down.
I ended up spending a good chunk of my own time dealing with failing builds or having a couple of people on my team be the point-persons for CI/CD infra.
Just a happy customer.
Our builds are pretty complex and we have tear down scripts that we always want to run even if a build fails and CircleCI does that (on 2.0, finally).
The only thing I wouldn't advise CircleCI for is if you want to distribute your tests across many machines -- and only because it's very expensive!
It has pipelines as a first class citizen. The config is rather concise XML, and can be hand-written or generated/modified through a web UI. There is also the option to store pipeline config as XML/YAML/JSON in a git repo.
Is that what you want?
https://github.com/gocd/gocd/issues/951
With Jenkins, I can create credentials with the key and use them upon checking out. This feature prevents me from using GoCD.
https://github.com/ianmiell/cheapci
it was surprisingly effective, but I capitulated to Jenkins eventually.
Also travisci with github is good but I don't know if it supports mac.
Pros: - The schedulers and pollers is very stable. You don't really have to worry about uptime. - Good enough documentation.
Cons: - Configuration is done in python. If you don't know python well then be prepared spend time to learn it.
The biggest pain point, at least for me, has been that buildbot has no support for caching of dependencies. If your project has many dependencies you will spend quite a bit of time either installing dependencies on the CI builders or having long build times because every build will download dependencies. This is not really a buildbot issue itself, but it will definitely bug you if you have used hosted CI products like TravisCI or Circle CI.