UPDATE:
Sparkler is safe, it isn’t affected by the Sparkle RCE (Remote Code Execution) vulnerability
http://appleinsider.com/articles/16/02/09/sparkle-software-updater-opens-mac-to-attack
So, You just finished the new features and bug fixes and ready to release your next version of your awesome OS X app which you choose to deliver and distribute outside the Apple’s App Store. Most probably you are using Sparkle, an amazing -open source- update framework for Mac applications, this is great, but what do you do to get into the point where users check for updates and find the new version!? and how long does it take?
The missing Sparkle component is now available (Sparkler)
Sparkler is an open source NodeJS build server for XCode’s Swift or Objective-C Mac OS Projects which aims to make the process as easy as a GET request!
Sparkler Github project
First: you need to setup the client side
Second: prepare your XCode project to be built via Sparkler
- Add build_config.js file to your project root directory
exports.config = { plistFilePathRelative: 'CocoaBindingReusableViews/CocoaBindingReusableViews/Info.plist' }
- Add the private key dsa.pem file to your project root directory
- Make sure it’s not referenced in the XCode project, this file must be kept safe
Third: setup Sparkler server:
- Clone or download the latest release of Sparkler to your Mac server machine
- Run NPM install
$ npm install
- Add your project git repo to the config.js file
{ .. Sample: { gitRepoURL: 'git@github.com:AMTourky/CocoaBindingReusableViews.git' } .. }
- Start Sparkler server (you can use PM2 for a better production process manager )
$ node index.js
Now, you have multiple distribution lines to deliver your application versions, there is a versions feed url for every branch of your project. For project ‘Sample’ on branch ‘dev’
sparkler_address/feed?projectName=Sample&branchName=dev
the build URL for ‘dev’ branch is:
sparkler_address/build?projectName=Sample&branchName=dev
there are optional versioning parameters for build action (major=true, minor=true or batch=true) that will affect the released version
The output build will automatically get the new versions built from the same projectName and branchName as long as the Sparkler server is up and running and reachable
Sparkler still in it’s early stages, check every now and then for more features
Features to expect soon:
- Support xcode project test cases so it can really be called a ‘Continuous Delivery’
- Support private key to be outside the project git repo
- Insights analytics
- …