Create .ipa files and then distribute them with TestFlight or HockeyApp, all from the command line!

Less cumbersome than clicking around in Xcode, and less hassle than rolling your own build script--Shenzhen radically improves the process of getting new builds out to testers and enterprises.

shenzhen is named for 深圳, the Chinese city famous for its role as the center of manufacturing for a majority of consumer electronics, including iPhones and iPads. It's part of a series of world-class command-line utilities for iOS development, which includes Cupertino (Apple Dev Center management), Houston (Push Notifications), Venice (In-App Purchase Receipt Verification), and Dubai (Passbook pass generation).


$ gem install shenzhen


Shenzhen adds the ipa command to your PATH:

$ ipa

  Build and distribute iOS apps (.ipa files)

    build                 Create a new .ipa file for your app
    distribute:testflight Distribute an .ipa file over TestFlight
    distribute:hockeyapp  Distribute an .ipa file over HockeyApp
    distribute:ftp        Distribute an .ipa file over FTP
    help                  Display global or [command] help documentation.

    distribute           distribute:testflight

  Global Options:
    -h, --help           Display help documentation
    -v, --version        Display version information
    -t, --trace          Display backtrace when an error occurs

Building & Distribution

$ cd /path/to/iOS Project/
$ ipa build
$ ipa distribute

TestFlight Distribution

$ ipa distribute:testflight -a API_TOKEN -T TEAM_TOKEN

Shenzhen will load credentials from the environment variables TESTFLIGHT_API_TOKEN and TESTFLIGHT_TEAM_TOKEN unless otherwise specified.

HockeyApp Distribution

$ ipa distribute:hockeyapp -t API_TOKEN

Shenzhen will load credentials from the environment variable HOCKEYAPP_API_TOKEN unless otherwise specified.

FTP Distribution

$ ipa distribute:ftp -h HOST -u USER -p PASSWORD -P FTP_PATH


Mattt Thompson


Shenzhen is available under the MIT license. See the LICENSE file for more info.