Mac OS X Continuous Delivery (Sparkler, The missing build server for Sparkle)

Sparkler is safe, it isn’t affected by the Sparkle RCE (Remote Code Execution)  vulnerability

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: ''
  • 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’


the build URL for ‘dev’ branch is:


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


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s