This project is a collection of scripts created with two goals:
- To standardize how Objective-C projects are bootstrapped after cloning
- To easily build Objective-C projects on continuous integration servers
Right now, there are two important scripts:
cibuild. Both are Bash scripts, to maximize compatibility and
eliminate pesky system configuration issues (like setting up a working Ruby
The structure of the scripts on disk is meant to follow that of a typical Ruby project:
script/ bootstrap cibuild
This script is responsible for bootstrapping (initializing) your project after it's been checked out. Here, you should install or clone any dependencies that are required for a working build and development environment.
By default, the script will verify that xctool is installed, then initialize
and update submodules recursively. If any submodules contain
that will be run as well.
To check that other tools are installed, you can set the
environment variable before running
script/bootstrap, or edit it within the
script directly. Note that no installation is performed automatically, though
this can always be added within your specific project.
This script is responsible for building the project, as you would want it built for continuous integration. This is preferable to putting the logic on the CI server itself, since it ensures that any changes are versioned along with the source.
You can also specify the schemes to build by passing them into the script:
script/cibuild ReactiveCocoa-Mac ReactiveCocoa-iOS
As with the
bootstrap script, there are several environment variables that can
be used to customize behavior. They can be set on the command line before
invoking the script, or the defaults changed within the script directly.
To add the scripts to your project, read the contents of this repository into
$ git remote add objc-build-scripts https://github.com/jspahrsummers/objc-build-scripts.git $ git fetch objc-build-scripts $ git read-tree --prefix=script/ -u objc-build-scripts/master
Then commit the changes, to incorporate the scripts into your own repository's history. You can also freely tweak the scripts for your specific project's needs.
To merge in upstream changes later:
$ git fetch -p objc-build-scripts $ git merge --ff --squash -Xsubtree=script objc-build-scripts/master