Deploy your iOS applications with gusto!
Ruby
Switch branches/tags
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
lib
spec
.document
.gitignore
.rspec
Gemfile
Gemfile.lock
LICENSE.txt
README.markdown
Rakefile
objective_release.gemspec

README.markdown

ObjectiveRelease

As a ruby programmer used to cap deploy for deployments, I want a simple way to deploy the iOS apps I work on.

ObjectiveRelease does two things:

  • Increments your app's minor version number
  • Generates release notes based on git commits since your last release

System Requirements

  • git
  • ruby
  • bundler
  • iOS app

Usage

Install the objective_release gem:

gem install objective_release

Add a Rakefile like the following to your iOS project root:

require 'objective_release'

namespace :version do
  desc "Bump version and update release notes"
  task :bump do
    basedir = File.join(File.dirname(__FILE__), 'MyApp')
    config = File.join(basedir, "MyApp-Info.plist")       # Path to the Plist config for your iOS app
    release_notes = File.join(basedir, "RELEASE_NOTES")   # Create one of these if you don't have one

    release = ObjectiveRelease::Release.new
    release.update_bundle_version(config)
    release.update_release_notes(release_notes)
  end
end

Then from your shell, just run the rake task:

rake version:bump

Examples

Here are some examples of how your local files will change after running the rake task:

Definitely check out the code if you run into issues or can't figure out how this thing should work.

ObjectiveRelease + BetaBuilder = Easily Deploy to TestFlight

If what you really want is push-button iOS deployments (I do!), and you're a TestFlight fan:

Add a Gemfile to the root of your iOS project:

source :rubygems

gem 'betabuilder', '0.4.1'
gem 'objective_release', '0.1.7'

Then add a Rakefile to your project root:

require 'rubygems'
require 'betabuilder'
require 'objective_release'

desc "Increment the version number and deploy via TestFlight"
task :bump_and_deploy => ["version:bump", "beta:deploy"]

namespace :version do
  desc "Bump version and update release notes"
  task :bump do
    basedir = File.join(File.dirname(__FILE__), 'MyApp')
    config = File.join(basedir, "MyApp-Info.plist")
    release_notes = File.join(basedir, "RELEASE_NOTES")

    release = ObjectiveRelease::Release.new
    release.update_bundle_version(config)
    release.update_release_notes(release_notes)
  end
end

BetaBuilder::Tasks.new do |config|
  config.target = "MyApp"
  config.configuration = "Distribution"
  config.deploy_using(:testflight) do |testflight|
    testflight.api_token = "your-api-token-here"
    testflight.team_token = "your-team-token-here"
    testflight.distribution_lists = %w{TestFlight Distribution List}
    testflight.generate_release_notes do
      File.open('MyApp/RELEASE_NOTES', 'rb') {|f| f.read }
    end
    testflight.notify = true
  end
end

Then just run rake bump_and_deploy and sit back and relax while your deployment is run automatically.

See Also

Contributing

  • Fork the project.
  • Make your feature addition or bug fix.
  • Add tests for it. This is important so I don't break it in a future version unintentionally.
  • Commit, do not mess with Rakefile, version, or history. (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
  • Send me a pull request. Bonus points for topic branches.

Copyright

Copyright (c) 2011 Shay Frendt. See LICENSE for details.