View Issue Details
|ID||Project||Category||View Status||Date Submitted||Last Update|
|0002414||FreeCAD||Merge request||public||2016-01-20 23:15||2016-05-13 03:57|
|Platform||Apple||OS||Mac OS X||OS Version||10.11.x|
|Target Version||Fixed in Version||0.16|
|Summary||0002414: Implement continuous integration for Mac OS X builds|
|Description||Currently the Mac OS X builds lag the automated Linux and Windows builds. The scope of this change request is to implement continuous integration builds for Mac OS X to provide parity to the community.|
|Additional Information||The continuous integration builds will be hosted on Travis-CI and be unified with the current Linux builds.|
|Tags||No tags attached.|
1) On a forked repo, we are successfully compiling, packaging, testing and deploying OS X builds to GitHub
2) This includes the following enhancements:
-Patch to MakeMacAppBunleRelocatable.py to add proper .pth support (thanks Peter)
-Support for 3DConnexion Mice (thanks Ian)
-Convenience script to generate a cross-platform standardized deployment artifact name from Version.h
-Packaging the OS build as a broadly accepted dmg disk image
With the aforementioned complete, I'm now working on a unified travis configuration for Linux and OS X so we can integrate the initial capability into master.
Longer term the CI system should compile, package, install the package and verify the package installation with unit and end-to-end tests for each platform and then be used to verify each pull-request before merging any pull-request into master to avoid breakages on master. Unfortunately, going the distance will protract closure of this issue and requires broader community consensus on a different branch/pull/merge/release process. For example, FreeCAD could benefit from Vincent Driessen's generally accepted Git Branching model or some variant thereof - http://nvie.com/posts/a-successful-git-branching-model/. For now, I am not going to tackle changing the Linux or Windows builds to include packaging, installation and verification against installation because what exists is a good enough approximation.
I appreciate everyone's support to this point and I should commit to a hard date for wrapping this up but I am cycle-constrained due to other commitments... Bear with me, we will get this done.
||Phase I (OS X packaging improvements) completed and submitted in pull request - The actual pull request for review is https://github.com/FreeCAD/FreeCAD/pull/113 and the forum pull request post is http://forum.freecadweb.org/viewtopic.php?f=17&t=14590|
Found an additional bump in the path - FreeCAD --run-test 0 did not exit with a non-zero exit status. Submitted pull-request https://github.com/FreeCAD/FreeCAD/pull/114 that @wwmayer has integrated into master. For additional context/color - see http://forum.freecadweb.org/viewtopic.php?f=17&t=14631
@wwmayer, I'm re-opening this issue because the entire scope has not yet been fully realized. Thanks for timely merge of the aforementioned pull request - quick merges really help to reduce iteration cycle times.
I will now continue work on port cacheing but have out of town guests arriving today through the weekend so that will percolate slowly...
Today we met another milestone towards achieving the full scope of this issue by deploying the [url=https://github.com/FreeCAD/FreeCAD-ports-cache]ports cache repo[/url] that reduces the Travis-CI [url=https://travis-ci.org/bblacey/FreeCAD-MacOS-CI/builds/118596278]Mac OS X build[/url] time by at least 20 minutes paving the way for combined Linux and OS X builds on FreeCAD master, every pull request and for developer's forked repos (in the spirit of the fail fast, fix early mantra). The [url=https://github.com/bblacey/FreeCAD-MacOS-CI/blob/unified/.travis.yml]unified .travis.yml for both Linux and OS X[/url] is nearly complete and currently in test on a forked repo. I plan to switch the OS X-only continuous integration builds on [url=https://github.com/bblacey/FreeCAD-MacOS-CI/commits/travis-ci-hb]the forked repo[/url] over to the unified Travis config Saturday morning for additional soak testing.
Everyone on this Mantis issue is encouraged to review both the ports cache and the unified travis config file and provide feedback - NOTE, there are a couple of [url=https://github.com/FreeCAD/FreeCAD-ports-cache/issues]known issues[/url] such as encapsulating the ports dependencies in a home-brew formula to drive the cache maintenance even lower.
I plan to create a forum post to solicit broader feedback so you can either chime in here or there - may be better in the forum to intellectually stimulate others to provide constructive feedback.
Finally, the next steps are pretty straight-forward:
1) Wrap up development and test of the unified travis config file
2) Create a pull-request to merge the unified travis config file into FreeCAD/FreeCAD master
3) Enable Travis-CI builds on Travis CI (both master and pull-requests)
@Ian, feel free to open a pull request on the cache for Netgen/nglib when it is ready or ping me to do so (thanks for closing this OS X gap).
@sgrogan, thanks again for tirelessly moving the OS X builds from the forked repo to the FreeCAD repo - you rock! We can completely automate the OS X side of the equation and I am interested in knowing more about the Windows side of the process to see if we can unify/simplify for you even further.
Ok, our works is done here.
1) Completed key OS X build pre-requisites (packaging, netgen/nglib masher, 3Dconnexion support, exception propagation for cross-platform test failure detection, python module path searching, etc.)
2) Developed and deployed an OS X ports cache system for FreeCAD
3) Developed a unified .travis.yml that now includes Linux and OS X builds
4) Extended Travis config to automatically deploy OS X builds to the FreeCAD GitHub repo
5) Enabled Travis builds for all pull-requests to verify contributions before merge
6) Enabled Travis builds for all push-requests to FreeCAD master to auto-build Linux and OS X and deploy the OS X releases.
Thanks to everyone who helped make FreeCAD for OS X a first class citizen ;)
See last update posted for scope.
Pull request https://github.com/FreeCAD/FreeCAD/pull/133 was the last mile.
Verified builds over past 24 hours - https://travis-ci.org/FreeCAD/FreeCAD/builds
|2016-01-20 23:15||blacey||New Issue|
|2016-01-21 03:33||blacey||Assigned To||=> blacey|
|2016-01-21 03:33||blacey||Status||new => assigned|
|2016-01-27 04:01||blacey||Relationship added||related to 0002421|
|2016-01-27 04:56||blacey||Status||assigned => acknowledged|
|2016-02-02 18:15||blacey||Note Added: 0006795|
|2016-03-08 05:10||blacey||Note Added: 0006896|
|2016-03-10 10:20||wmayer||Changeset attached||=> FreeCAD Master master ed61d655|
|2016-03-10 10:20||wmayer||Status||acknowledged => closed|
|2016-03-10 10:20||wmayer||Resolution||open => fixed|
|2016-03-10 10:20||wmayer||Fixed in Version||=> 0.16|
|2016-03-10 17:34||blacey||Note Added: 0006901|
|2016-03-10 17:34||blacey||Status||closed => feedback|
|2016-03-10 17:34||blacey||Resolution||fixed => reopened|
|2016-03-26 05:34||blacey||Note Added: 0006934|
|2016-03-26 05:34||blacey||Status||feedback => assigned|
|2016-04-07 17:38||blacey||Note Added: 0006955|
|2016-04-07 17:41||blacey||Note Added: 0006956|
|2016-04-07 17:41||blacey||Status||assigned => resolved|
|2016-04-07 17:41||blacey||Resolution||reopened => fixed|
|2016-05-13 03:57||yorik||Status||resolved => closed|