explaingit

nomad-cli/shenzhen

4,637RubyAudience · developerComplexity · 2/5Setup · hard

TLDR

A deprecated Ruby CLI tool that built iOS apps into IPA files and uploaded them to TestFlight, HockeyApp, and other services. Use Fastlane instead for new projects.

Mindmap

mindmap
  root((repo))
    What it did
      Build iOS IPA files
      Distribute to testers
      Inspect IPA profiles
    Distribution Targets
      TestFlight
      HockeyApp
      Crashlytics Beta
      Amazon S3 and FTP
    Tech Stack
      Ruby
      Xcode 6 API
      Gem install
    Status
      Deprecated
      Use Fastlane gym
    Audience
      iOS developers
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Understand how iOS IPA distribution pipelines were automated before Fastlane became the standard (historical reference).

USE CASE 2

Inspect the provisioning profile details inside an existing IPA file using the ipa info command.

Tech stack

RubyXcode

Getting it running

Difficulty · hard Time to first run · 1day+

Deprecated, relies on the Xcode 6 build API which Apple dropped, will not work with Swift 3 or watchOS.

In plain English

Shenzhen is a Ruby command-line tool for building iOS apps into distributable IPA files and uploading them to various testing and distribution services. The README opens with an important notice: Shenzhen is deprecated. It relies on an Xcode 6 build API that Apple stopped supporting years ago, which causes problems with Swift 3, watchOS targets, and other modern features. The maintainers recommend using Fastlane's gym tool for builds and Fastlane itself for distribution instead. When it was current, Shenzhen added a single command called ipa to your terminal. Running ipa build in an iOS project directory compiled the app and produced an IPA file. Running ipa distribute then sent that file to whichever distribution service you chose. Supported destinations included TestFlight (via iTunes Connect), HockeyApp, Crashlytics Beta, TestFairy, DeployGate, Amazon S3, FTP, SFTP, and several Chinese distribution platforms (FIR.im, PGYER). Each distribution target had its own subcommand, and credentials could be passed as flags or loaded from environment variables, making it straightforward to integrate into automated build pipelines. There was also an ipa info command that read the provisioning profile embedded in an IPA file and printed its details in a formatted table, which was useful for quickly checking which certificates and entitlements were included in a build. Shenzhen is one of several iOS-focused command-line tools built by the Nomad project, a collection that also covered push notifications, in-app purchase receipt verification, and Apple Developer Center account management. Because the project is deprecated and no longer maintained, it should not be used for new projects. Installation was done via gem install shenzhen.

Copy-paste prompts

Prompt 1
What is the Fastlane gym equivalent of the Shenzhen ipa build command for compiling an iOS app to an IPA?
Prompt 2
Show me a Fastfile that replaces the Shenzhen ipa distribute crashlytics workflow using Fastlane.
Prompt 3
How do I upload an IPA to TestFlight from the command line using Fastlane instead of Shenzhen?
Prompt 4
Write a Fastlane lane that builds an iOS app and distributes it to HockeyApp with release notes.
Open on GitHub → Explain another repo

← nomad-cli on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.