Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
c03669e
commit 94ef093
Showing
3 changed files
with
85 additions
and
9 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Original file line | Diff line number | Diff line change |
---|---|---|---|
@@ -1,20 +1,82 @@ | |||
These scripts are primarily meant to support the use of | # objc-build-scripts | ||
[Janky](https://github.com/github/janky). To use them, read the contents of this |
|
||
repository into a `script` folder: | This project is a collection of scripts created with two goals: | ||
|
|||
1. To standardize how Objective-C projects are bootstrapped after cloning | |||
1. To easily build Objective-C projects on continuous integration servers | |||
|
|||
## Scripts | |||
|
|||
Right now, there are two important scripts: [`bootstrap`](#bootstrap) and | |||
[`cibuild`](#cibuild). Both are Bash scripts, to maximize compatibility and | |||
eliminate pesky system configuration issues (like setting up a working Ruby | |||
environment). | |||
|
|||
The structure of the scripts on disk is meant to follow that of a typical Ruby | |||
project: | |||
|
|||
``` | |||
script/ | |||
bootstrap | |||
cibuild | |||
``` | |||
|
|||
### bootstrap | |||
|
|||
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 `script/bootstrap`, | |||
that will be run as well. | |||
|
|||
To check that other tools are installed, you can set the `REQUIRED_TOOLS` | |||
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. | |||
|
|||
### cibuild | |||
|
|||
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. | |||
|
|||
By default, the script will run [`bootstrap`](#bootstrap), look for any Xcode | |||
workspace or project in the working directory, then build all targets/schemes | |||
(as found by `xcodebuild -list`) using [xctool][]. | |||
|
|||
You can also specify the schemes to build by passing them into the script: | |||
|
|||
```sh | |||
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. | |||
|
|||
## Getting Started | |||
|
|||
To add the scripts to your project, read the contents of this repository into | |||
a `script` folder: | |||
|
|
||
``` | ``` | ||
$ git remote add objc-build-scripts https://github.com/jspahrsummers/objc-build-scripts.git | $ git remote add objc-build-scripts https://github.com/jspahrsummers/objc-build-scripts.git | ||
$ git fetch objc-build-scripts | $ git fetch objc-build-scripts | ||
$ git read-tree --prefix=script/ -u objc-build-scripts/master | $ git read-tree --prefix=script/ -u objc-build-scripts/master | ||
``` | ``` | ||
|
|
||
Then commit the changes to incorporate the scripts into your own repository's | 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 | history. You can also freely tweak the scripts for your specific project's | ||
needs. | needs. | ||
|
|
||
To bring in upstream changes later: | To merge in upstream changes later: | ||
|
|
||
``` | ``` | ||
$ git fetch -p objc-build-scripts | $ git fetch -p objc-build-scripts | ||
$ git merge -Xsubtree=script objc-build-scripts/master | $ git merge --ff --squash -Xsubtree=script objc-build-scripts/master | ||
``` | ``` | ||
|
|||
[xctool]: https://github.com/facebook/xctool |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters