5 ms·
Spacex launched a satellite to the space and returned back to earth safely faster than our JenkinsCI builds most of our apps.
by petetnt 9y ago
Spacex launched a satellite to the space and returned back to earth safely faster than our JenkinsCI builds most of our apps.
- inetknght 9y agoI'd blame your source code more than Jenkins. Our jenkins instance runs our CI in a couple of minutes.
- InclinedPlane 9y agoNot everyone is working on projects that are little more than CRUD webapps. I've worked on code that took hours to compile even on beefy machines.
- hinkley 9y agoI got a 300k line Java app down to seven and a half minutes including unit and functional tests. What are you working with?
- tcoff91 9y agoProbably a giant C++ codebase. Our CI runs can take well over an hour. C++ compiles so damn slowly compared to Java.
- inetknght 9y agoYou should probably hire better C++ developers if it takes that long.
- wutwutwutwut 9y agoHow long should a giant C++ code base take to compile?
- snovv_crash 9y agoWith a good CMake configuration and Ninja and ccache, a minute or two max. Your CMake makes incremental builds safe, and the ccache saves you when switching between branches.
- inetknght 9y agoCMake helps a good bit, ccache goes further, and ninja helps a bit too. But none of them can help templated header-only libraries with complex interdependencies. It gets particularly bad when the developer #includes a convenience header to bring in _everything_ in the library instead of just what they need.
- snovv_crash 9y agoAgreed. Good use of PImpl when you have large external header-only libraries is also generally recommended to keep the dependency graph nicer. Also from what I've seen, large header-only codebases tend to be external and thus generally don't change that much, so if you can limit your own internal dependency tree ccache can still save you.
- inetknght 9y agoHow giant is giant? I've seen tens of thousands of lines of code compile in 30 minutes. I've seen a hundred thousand lines of code compile in 2 minutes. It really depends on how the project is laid out. If you're using lots of header-only libraries and try to compile monolithically (like soooooo many C++ applications do these days), you're going to have a bad (compile) time.
- baq 9y agotens of thousands? that's small. we're talking MLOCs here.
- corndoge 9y agoyou should probably become more experienced in c/c++ development before sharing your opinion
- btilly 9y agoYou should see how quick C++ compilation times can be a competent organization like Google before dismissing that opinion.
- deleted 9y ago[deleted]
- InclinedPlane 9y agoAre you talking about clean builds or incremental builds?
- btilly 9y agoThey usually do incremental builds. And a lot of work goes into reproducible builds so that incremental builds can be trusted. But even clean builds are typically minutes of wall-clock time. Not hours. Of course part of the trick is that work has been distributed across a cluster, so a lot longer was spent compiling than that...
- unvs 9y agoMaybe you shouldn't prejudge the quality of developers on a project you know nothing about
- inetknght 9y agoThe software analyzes DNA, it's definitely not a webapp
- btilly 9y agoI've worked on code that took that long to compile, and the cause of the problem was usually bad recursive makefiles doing work over and over again. At the other extreme I've also worked at Google and have seen insanely complex C++ code bases compile in 30 seconds flat. Multiple hour build times usually show that nobody smart enough had the interest and authority to solve the problem properly. It doesn't generally mean that your project is awesome. It certainly isn't something that I would brag about.
- InclinedPlane 9y agoOK, that's great for google, but "complex" doesn't necessarily mean much. Do you think the linux kernel devs are slouches? The gcc devs? Both of those projects take hours to compile on reasonable hardware, and that's not for lack of trying. Also, sometimes it's not about code, it's about digital assets, which is going to be IO bound. I've worked on projects that took a full working day to do a clean compile and others where it was necessary to do binary integrations instead of code because the overall build time would otherwise be measured in days or weeks.