Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

new method to get the derived_build_dir #46

Open
wants to merge 55 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
55 commits
Select commit Hold shift + click to select a range
868d070
Use information inside WorkspaceSettings to determine derived data di…
drodriguez Sep 3, 2011
f9fe8d8
Moved position of archive task
rennarda Nov 11, 2011
ed7a3e4
Ftfy.
dts Nov 12, 2011
aa4e235
Get these out of the built location, not the deploy payload section.
dts Nov 12, 2011
d26644b
Package it up with Apple's script, not your own thing.
dts Nov 12, 2011
8fa80ca
Indent these things betterly.
dts Nov 12, 2011
754953e
Pulled out app-specific configuration.
dts Nov 13, 2011
8727bc8
Fix.
dts Nov 15, 2011
bef32cf
Include version string in the webpage.
dts Nov 15, 2011
5d77fc7
Add support for custom scp port. Closes #35
smtlaissezfaire Feb 6, 2012
1890622
Use relative paths instead of rubygems paths
smtlaissezfaire Feb 6, 2012
8218a12
* Use app_file_name, not app_name for Info.plist path
smtlaissezfaire Feb 6, 2012
264a168
Detect build failures and abort Rake
epall Apr 18, 2012
ec5bfc5
Fixing CFBundleIconFiles for me. Its a nested attribute under CFBund…
peelman Apr 24, 2012
39a67a5
Merge branch 'master' of https://github.com/dts/betabuilder
peelman Apr 24, 2012
8d3828d
changing case on require statement
peelman Apr 25, 2012
1f7ac28
Streamlining and adding the option to set a version number (from Git)
peelman Apr 25, 2012
bf09e4a
Changing version and adding my info
peelman Apr 25, 2012
8a64507
Updating gemspec as well
peelman Apr 25, 2012
02b2c5e
Making the output path for IPAs configurable; defaults to the working…
peelman Apr 25, 2012
fe8ffbb
Merge branch 'FixingandAdding'
peelman Apr 25, 2012
01c4f80
Adding configuration to enable adding extra Xcodebuild arguments
peelman Apr 25, 2012
09398a7
Merge branch 'FixingandAdding'
peelman Apr 25, 2012
431875a
Joining file paths properly...
peelman Apr 25, 2012
bcece3f
Wrapping provisioning profile in single quotes...
peelman Apr 25, 2012
ffa976d
Merge branch 'FixingandAdding'
peelman Apr 25, 2012
05a0707
Updating Readme
peelman Apr 25, 2012
e851102
Merge branch 'FixingandAdding'
peelman Apr 25, 2012
979cdcf
Merge commit 'f9fe8d872c3d62660f062571ecc2ef6c0a946bc5' into Fixingan…
peelman Apr 27, 2012
d5eb228
Merging...
peelman Apr 27, 2012
65e6c39
Merging...
peelman Apr 27, 2012
52fdfe0
Merging epall's detect build failures
peelman Apr 27, 2012
d9b90cb
Updating Readme
peelman Apr 27, 2012
cd2dc51
Merge branch 'FixingandAdding'
peelman Apr 27, 2012
9a3fe7e
Refactoring a bit
peelman Apr 27, 2012
261a8c1
Merge branch 'FixingandAdding'
peelman Apr 27, 2012
8c0a7b8
Updating Changelog
peelman Apr 27, 2012
fc391a2
Adding full paths to xcodebuild and xcrun; they are override-able in …
peelman Apr 27, 2012
6b8cd13
Merge branch 'FixingandAdding'
peelman Apr 27, 2012
58bd575
Updating Changelog
peelman Apr 27, 2012
5d4290d
Adding the option to do set Skip Clean, Verbose mode, and Dry Run fro…
peelman May 1, 2012
0925272
Merge branch 'FixingandAdding'
peelman May 1, 2012
5362ab9
Adding a space, fixing some is_a?s.
peelman May 1, 2012
b64224e
Better ENV handling (thanks @cdmwebs)
peelman May 1, 2012
479992b
Adding Rake::DSL include to avoid deprecation issue...
peelman May 21, 2012
1c7b61d
Merging @drodriguez's DerivedData finder
peelman May 21, 2012
1083e2c
Updating readme
peelman May 21, 2012
dbfdd4d
Updating changes
peelman May 21, 2012
21eec39
Undoing @drodriguez's DerivedData location...was too fragile...
peelman May 21, 2012
7cae40a
Merge branch 'master' of github.com:peelman/betabuilder
peelman May 21, 2012
d8644e8
Revert "Updating changes"
peelman May 21, 2012
bb6662b
Use a shorter Git message for version information
peelman Jun 19, 2012
152566a
Pulling in Luke's change
peelman Jun 19, 2012
9b1a3d1
new method to get the derived_build_dir
shm Jul 27, 2012
14963b5
merged master from peelman
shm Jul 30, 2012
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 15 additions & 0 deletions CHANGES.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,18 @@
## 0.7.5
* Allows automation of version/build number setting
* Adds full paths to xcodebuild and xcrun; they are override-able in the config
* Adds ability to add arguments to package command
* Refactors commands and argument code
* Makes build and signing output optional (use config.verbose to trigger)
* Adds simplified output
* Allows custom SCP ports (@smtlaissezfaire)
* Fixes Archive task failure (@rennarda)
* Uses Apple's Packager to produce valid IPAs (@dts)
* Fixes cases where CFPropertyList could fail to load (@svelix)
* Uses relative paths for requires (@smtlaissezfaire)
* Raises an exception if the build fails (@epall)


## 0.7.4.1
* Allow auto-archiving from other Rake namespaces (@victor)
* Fixed bug with Xcode archive sharing (@victor)
Expand Down
94 changes: 93 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,82 @@ To use a namespace other than "beta" for the generated tasks, simply pass in you

This lets you set up different sets of BetaBuilder tasks for different configurations in the same Rakefile (e.g. a production and staging build).

## Configuration
A full list of configuration options and their details

`configuration` - (String) The Xcode Configuration to use (Defined on the Info tab of the Project)

`build_dir` - (File Path) The directory the build output will be. (`:derived` for Xcode 4 for versions < 0.8)

`auto_archive` - (true/**false**) Automatically archive when packaging

`archive_path` - (File Path) Path to the Archives

`xcodebuild_path` - (File Path) Path to xcodebuild, if its non-standard

`xcodeargs` - (Arguments) Arguments passed to `xcodebuild` when it runs

`project_file_path` - (File Path) Path to the `.xcodeproj` file

`workspace_path` - (File Path) Path to the `.xcworkspace` file

`ipa_destination_path` - (File Path) Path to output Packaged IPA to

`scheme` - (String) What Scheme to use when building

`app_name` - (String) The name of the app being built (should match the file name, less the `.app` extension)

`arch` - (String) The architecture to build for, if different from project settings

`xcode4_archive_mode` - (true/**false**) Use Xcode4's Archive mode

`skip_clean` - (true/**false**) Skip the clean step when building

`verbose` - (true/**false**) Increased output for debugging

`dry_run` - (true/**false**) Don't upload to Distribution Strategy, just act like it

`set_version_number` - (true/**false**) Attempts to set a version number, see below

### Configuration (Testflight)
Testflight presents its own set of options that can be configured

`api_token` - (String) Can be your API key, but its recommended to use an `ENV[""]` variable

`team_token` - (String) Your Team's Testflight API token

`distribution_lists` - (Array) A Ruby array (`[1,2]` or `%w{1 2}`) of distribution list names for Testflight

`notify` - (true/**false**) Notify the distribution list of this build

`replace` - (true/**false**) Replace if an existing build exists with the same ID and version

### Configuration (Web)
Pushing to a web server has the following options.

SSH keys will simplify authentication and make this process seamless

`remote_host` - (String) Hostname for the server the build will be pushed to

`remote_port` - (String) Port Number to use for SCP/SFTP

`remote_installation_path` - (String) Remote Path

### Configuration (RunTime)
Certain configuration options are availabe at the command line, so that you can temporarily set them for a single run without modifying your configuration.

Pass any of these in as environment variables:

`DRY` - (true/**false**) Enable Dry Run
`VERBOSE` - (true/**false**) Turn on all output; lets you see the clean, build, and signing output
`SKIPCLEAN` - (true/**false**) Skips the clean step and goes right to Build.

####Examples

`rake staging:deploy DRY=true`

`rake staging:redeploy VERBOSE=true SKIPCLEAN=true`

## Xcode 4 support

Betabuilder works with Xcode 4, but you may need to tweak your task configuration slightly. The most important change you will need to make is the build directory location, unless you have configured Xcode 4 to use the "build" directory relative to your project, as in Xcode 3.
Expand All @@ -81,13 +157,29 @@ If you are working with an Xcode 4 workspace instead of a project file, you will
config.workspace_path = "MyWorkspace.xcworkspace"
config.scheme = "My App Scheme"
config.app_name = "MyApp"

set_version_number
If you are using a workspace, then you must specify the scheme. You can still specify the build configuration (e.g. Release).

## Automatic deployment with deployment strategies

BetaBuilder allows you to deploy your built package using it's extensible deployment strategy system; the gem currently comes with support for simple web-based deployment or uploading to [TestFlightApp.com](http://www.testflightapp.com). Eventually, you will be able to write your own custom deployment strategies if neither of these are suitable for your needs.

## Setting version numbers automatically

You can use betabuilder to set a build number using Git's `describe` system. In order for that to work, at least one `tag` must exist somewhere in the git hierarchy for the branch being built from.

Also, you are required to set your `CFBundleVersion` to `${VERSION_LONG}` inside your `Info.plist`. To accomodate manual builds, add a `VERSION_LONG` Build Setting to your app's Project, and treat it as you normally would your `Info.plist` version number.

Once a tag is created and your App is configured, simply add this to your BetaBuilder config and it will use Git to generate the

config.set_version_number = true

It will generate a version number like: `1.0-15-g6b3c1bb`.

* *1.0* is the most recent tag
* *15* is the number of commits since the tag was generated
* *g6b3c1bb* is the beginning of the hash of the last commit.

### Deploying your app with TestFlight

By far the easiest way to get your beta release into the hands of your testers is using the excellent [TestFlight service](http://testflightapp.com/), although at the time of writing it is still in private beta. You can use TestFlight to manage your beta testers and notify them of new releases instantly.
Expand Down
8 changes: 4 additions & 4 deletions Rakefile
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,11 @@ spec = Gem::Specification.new do |s|

# Change these as appropriate
s.name = "betabuilder"
s.version = "0.7.4.1"
s.version = "0.7.5"
s.summary = "A set of Rake tasks and utilities for managing iOS ad-hoc builds"
s.author = "Luke Redpath"
s.email = "[email protected]"
s.homepage = "http://github.com/lukeredpath/betabuilder"
s.authors = ["Luke Redpath", "Nick Peelman"]
s.email = ["[email protected]", "[email protected]"]
s.homepage = "http://github.com/peelman/betabuilder"

s.has_rdoc = false
s.extra_rdoc_files = %w(README.md LICENSE CHANGES.md)
Expand Down
11 changes: 7 additions & 4 deletions betabuilder.gemspec
Original file line number Diff line number Diff line change
@@ -1,9 +1,13 @@
# -*- encoding: utf-8 -*-

Gem::Specification.new do |s|
s.name = "betabuilder"
s.version = "0.7.4.1"

s.name = "betabuilder"
s.version = "0.7.5"
s.summary = "A set of Rake tasks and utilities for managing iOS ad-hoc builds"
s.authors = ["Luke Redpath", "Nick Peelman"]
s.email = ["[email protected]", "[email protected]"]
s.homepage = "http://github.com/peelman/betabuilder"

s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
s.authors = ["Luke Redpath"]
s.date = "2012-05-16"
Expand All @@ -14,7 +18,6 @@ Gem::Specification.new do |s|
s.rdoc_options = ["--main", "README.md"]
s.require_paths = ["lib"]
s.rubygems_version = "1.8.11"
s.summary = "A set of Rake tasks and utilities for managing iOS ad-hoc builds"

if s.respond_to? :specification_version then
s.specification_version = 3
Expand Down
Loading