mirror of
https://github.com/gosticks/SwiftGit2.git
synced 2025-10-16 11:55:34 +00:00
83 lines
2.8 KiB
Markdown
83 lines
2.8 KiB
Markdown
# objc-build-scripts
|
|
|
|
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 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
|
|
```
|
|
|
|
[xctool]: https://github.com/facebook/xctool
|