4 ms·
If you're putting lots of logic into ANY CI server you're doing it wrong! Script your build so that you can run it with a single command on any build server or
by radicalbyte 11y ago
If you're putting lots of logic into ANY CI server you're doing it wrong!
Script your build so that you can run it with a single command on any build server or any developer machine. Then have the build server invoke said scripts (with arguments for any build-server specific paths etc).
Having spent a week fixing problems with inter-plugin dependencies I do agree with your point - Jenkins just isn't very good, like a lot of the free software from that generation (FitNess etc).
- jquast 11y agoAbsolutely, tasks/system commands should always be stored in VCS as a shell script, so that feature branches can exercise changes in the task itself. Unfortunately theres the other 90% to worry about, and thats where the highest complexity is, such as configuring a build chains, access control, reporting, etc. Glad to see jenkins is moving towards a travis-ci ".travis.yml" kind of format, but I'm not hopeful to see it catch up to anywhere near TeamCity, even Bamboo in user or developer UX.
- yamitty11 11y agoCould use something like this if you are using github https://github.com/groupon/DotCi https://github.com/groupon/DotCi Job configurations can be version controlled and reviewed like everything else. For multijob pipelines checkout https://wiki.jenkins-ci.org/display/JENKINS/Pipeline+Plugin https://wiki.jenkins-ci.org/display/JENKINS/Pipeline+Plugin
- techman9 11y agoJJB is also a nice tool that seems like it allows similar functionality (I haven't worked with DotCi, so I can't say how they compare) http://docs.openstack.org/infra/jenkins-job-builder/ http://docs.openstack.org/infra/jenkins-job-builder/
- oblio 11y agoWell... Jenkins 2.0 will provide support for build chains via the pipeline plugin which will be included as a core plugin. Access control can be configured quite nicely with the Role Strategy Plugin: https://wiki.jenkins-ci.org/display/JENKINS/Role+Strategy+Plugin https://wiki.jenkins-ci.org/display/JENKINS/Role+Strategy+Pl... + AD/LDAP integration. Reporting automation is covered by the pipeline plugin. Custom reporting is quite easy to implement on top of Jenkins, its APIs cover almost everything you need.
- maxxxxx 11y agoWe made the same mistake with Anthill Pro a long time ago. The plugins were of various quality and caused us a lot of headache. Now our build and test suite is just a script each and it can pretty much on on any CI server.
- Joky 11y agoYou have simple problems to suggest simple solutions. CI logic can gets complicated: What about cascade builds? The pipeline can't be handled in your build script. What about reporting? (list of compiler warnings in the build? List of tests that failed? In general extracting information from the log) What about efficient email alert? (with blame list, list of changes, etc.) What about IRC reporting? Jenkins is not very good (and written in Java :() but the other available free alternatives are just not better.
- robbiemitchell 11y agoThis is a critical component of releasing production software. I would not expect to see "free" in the conversation here.
- mbrock 11y agoThere are good reasons to prefer free and open systems, even for "production" software. Those reasons are part of why people choose to use GNU/Linux, nginx, and all the rest of the open infrastructure.
- robbiemitchell 11y agoIt was not clear whether it was free as in beer or speech. I do understand there are benefits to using open software. Too often I see engineers bias heavily toward inexpensive, free/cheap, or home-built solutions simply because they personally don't think things should cost money, when the understated anchoring costs of building and maintaining, plus the opportunity cost of valuable people time, might shift the toward other alternatives if a wider business context is taken into consideration.
- thawkins 11y agoIt's never the cost for me, it's the mutability, oos I can hack on, and make it do exactly what I want it to do, proprietary code I only ever seem to get somewhat close but never exactly there.