

We don't build for Macs though - our stomachs can only take so much developer hostility at one time. The main big advantage we gain from this is our ability to build stuff locally in exactly the same way the build server would do - so developers can test end to end in their local branches if and when needed. But copying documentation in, making installers etc is only done at release time as (in our case) waiting for an installer to package a large blob of data or spamming git with tags does not add value during our normal development cycles. The actual build of course is handled by invoking the first build script. When its time for a real public build, a second release/build script handles the release process (tagging commits, merge into master, make release notes and handle uploads). This one runs on each commit/pull request and simply validates that everything works, runs the tests, and uploads the builds to a QA share for manual testing. We are using Jenkins with a local Nuke build script to handle all the main build and installer building.
