View Issue Details

IDProjectCategoryView StatusLast Update
0002414FreeCADMerge requestpublic2016-05-13 03:57
ReporterblaceyAssigned Toblacey 
PrioritynormalSeverityminorReproducibilityN/A
Status closedResolutionfixed 
PlatformAppleOSMac OS XOS Version10.11.x
Product Version0.15 
Target VersionFixed in Version0.16 
Summary0002414: Implement continuous integration for Mac OS X builds
DescriptionCurrently 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 InformationThe continuous integration builds will be hosted on Travis-CI and be unified with the current Linux builds.
TagsNo tags attached.

Relationships

related to 0002421 closedblacey Upgrade to matplotlib 1.5.0 or greater 

Activities

blacey

2016-02-02 18:15

developer   ~0006795

Status update:

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.

Cheers,
Bruce

blacey

2016-03-08 05:10

developer   ~0006896

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

blacey

2016-03-10 17:34

developer   ~0006901

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...

blacey

2016-03-26 05:34

developer   ~0006934

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.

blacey

2016-04-07 17:38

developer   ~0006955

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 ;)

blacey

2016-04-07 17:41

developer   ~0006956

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

Issue History

Date Modified Username Field Change
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