-
Notifications
You must be signed in to change notification settings - Fork 15
Maintaining
Paul Zabelin edited this page Jan 20, 2019
·
23 revisions
Use Kanban project to track pending work:
- Code coverage is maintained at 100%, see codecov.io report.
- Single workspace builds Example app and the development pod as a dependency.
- Cocoapods are not checked, see benefits ignoring Pods
- Travis runs fast parallelizing multiple jobs on several iOS simulators and Mac OS using build cache.
- Travis deploys tagged release and verifies
pod lib lint. - Carthage compatible, release is made by Carthage archive.
- Cocoapods and Bundle dependencies maintained up-to-date monthly by Cron Job.
- Install dependencies
cd Example
pod install
- Open workspace
open Example/PerspectiveTransform.xcworkspace - Autofix Xcode warnings by updating the Pods project to recommended settings and migrating to Swift 4.2. Verify that does not produce code changes
Build the PerspectiveTransform pod and run unit specs.
- Run should open the app with two tabs:
- Drag text field corners, it should allow text editing
- Tap to see the animation snapping sky in the frame of iPad.
- The test
Cmd-Ushould run both Framework Unit Specs and App Specs
OpenCV OSX Tests target should pass tests on Mac OS
Verify all pages work with Live View open in the assistant editor window.
Travis build
- iPhone X to report coverage and deploy releases
- Mac OS to run tests and compare with OpenCV implementation. Also runs
pod lib lint - Other iOS simulators to run tests in parallel
pod lib lint should pass without warnings. When it fails Travis will rerun it with verbose output and will keep the generated workspace for inspection, see lint retry with verbose
Travis runs build monthly via Cron Job and fails if dependencies are outdated.
- git shallow clone
- cache cocoapods, bundler, brew
- pod repo update is done by git pull only once
- link cached brew package instead of installing
- Delete build cache after updating Podfile
- Debug Travis job using curl command and ssh to the build machine using tmux session
Prepare environment, copy Xcode destination from Travis log
export TRAVIS_XCODE_WORKSPACE=Example/PerspectiveTransform.xcworkspace
export TRAVIS_XCODE_SCHEME=Example
export XCODE_DESNITATION='platform=iOS Simulator,name=iPhone 8'
Run locally the same script command without xcpretty:
xcodebuild test -workspace "$TRAVIS_XCODE_WORKSPACE" -scheme "$TRAVIS_XCODE_SCHEME" -destination "$XCODE_DESNITATION"