fastlane

deliversnapshotframeitpemsighproducecertspaceshippilotboardinggymscanmatch


produce

Twitter: @FastlaneTools License Gem

Create new iOS apps on iTunes Connect and Dev Portal using your command line

produce creates new iOS apps on both the Apple Developer Portal and iTunes Connect with the minimum required information.

Get in contact with the developers on Twitter: @FastlaneTools


FeaturesInstallationUsageHow does it work?TipsNeed help?


produce is part of fastlane: The easiest way to automate beta deployments and releases for your iOS and Android apps.

Features

  • Create new apps on both iTunes Connect and the Apple Developer Portal
  • Modify Application Services on the Apple Developer Portal
  • Create App Groups on the Apple Developer Portal
  • Associate apps with App Groups on the Apple Developer Portal
  • Support for multiple Apple accounts, storing your credentials securely in the Keychain
Like this tool? Be the first to know about updates and new fastlane tools

Installation

sudo gem install produce

Usage

Creating a new application

produce

To get a list of all available parameters:

produce --help
  Commands:
    associate_group  Associate with a group, which is create if needed or simply located otherwise
    create           Creates a new app on iTunes Connect and the Apple Developer Portal
    disable_services Disable specific Application Services for a specific app on the Apple Developer Portal
    enable_services  Enable specific Application Services for a specific app on the Apple Developer Portal
    group            Ensure that a specific App Group exists
    help             Display global or [command] help documentation

  Global Options:
    -u, --username STRING Your Apple ID Username (PRODUCE_USERNAME)
    -a, --app_identifier STRING App Identifier (Bundle ID, e.g. com.krausefx.app) (PRODUCE_APP_IDENTIFIER)
    -e, --bundle_identifier_suffix STRING App Identifier Suffix (Ignored if App Identifier does not ends with .*) (PRODUCE_APP_IDENTIFIER_SUFFIX)
    -q, --app_name STRING App Name (PRODUCE_APP_NAME)
    -z, --app_version STRING Initial version number (e.g. '1.0') (PRODUCE_VERSION)
    -y, --sku STRING     SKU Number (e.g. '1234') (PRODUCE_SKU)
    -m, --language STRING Primary Language (e.g. 'English', 'German') (PRODUCE_LANGUAGE)
    -c, --company_name STRING The name of your company. Only required if it's the first app you create (PRODUCE_COMPANY_NAME)
    -i, --skip_itc       Skip the creation of the app on iTunes Connect (PRODUCE_SKIP_ITC)
    -d, --skip_devcenter  Skip the creation of the app on the Apple Developer Portal (PRODUCE_SKIP_DEVCENTER)
    -b, --team_id STRING The ID of your team if you're in multiple teams (PRODUCE_TEAM_ID)
    -l, --team_name STRING The name of your team if you're in multiple teams (PRODUCE_TEAM_NAME)
    -h, --help           Display help documentation
    -v, --version        Display version information

Enabling / Disabling Application Services

If you want to enable Application Services for an App ID (HomeKit and HealthKit in this example):

produce enable_services --homekit --healthkit

If you want to disable Application Services for an App ID (iCloud in this case):

produce disable_services --icloud

If you want to create a new App Group:

produce group -g group.krausefx -n "Example App Group"

If you want to associate an app with an App Group:

produce associate_group -a com.krausefx.app group.krausefx

Parameters

Get a list of all available options using

produce enable_services --help
    --app-group          Enable App Groups
    --apple-pay          Enable Apple Pay
    --associated-domains Enable Associated Domains
    --data-protection STRING Enable Data Protection, suitable values are "complete", "unlessopen" and "untilfirstauth"
    --game-center        Enable Game Center
    --healthkit          Enable HealthKit
    --homekit            Enable HomeKit
    --wireless-conf      Enable Wireless Accessory Configuration
    --icloud STRING      Enable iCloud, suitable values are "legacy" and "cloudkit"
    --in-app-purchase    Enable In-App Purchase
    --inter-app-audio    Enable Inter-App-Audio
    --passbook           Enable Passbook
    --push-notification  Enable Push notification (only enables the service, does not configure certificates)
    --sirikit            Enable SiriKit
    --vpn-conf           Enable VPN Configuration
produce disable_services --help
    --app-group          Disable App Groups
    --apple-pay          Disable Apple Pay
    --associated-domains Disable Associated Domains
    --data-protection    Disable Data Protection
    --game-center        Disable Game Center
    --healthkit          Disable HealthKit
    --homekit            Disable HomeKit
    --wireless-conf      Disable Wireless Accessory Configuration
    --icloud             Disable iCloud
    --in-app-purchase    Disable In-App Purchase
    --inter-app-audio    Disable Inter-App-Audio
    --passbook           Disable Passbook
    --push-notification  Disable Push notifications
    --sirikit            Disable SiriKit
    --vpn-conf           Disable VPN Configuration

Environment Variables

All available values can also be passed using environment variables, run produce --help to get a list of all available parameters.

fastlane Integration

Your Fastfile should look like this

lane :release do
  produce(
    username: '[email protected]',
    app_identifier: 'com.krausefx.app',
    app_name: 'MyApp',
    language: 'English',
    app_version: '1.0',
    sku: '123',
    team_name: 'SunApps GmbH' # only necessary when in multiple teams
  )

  deliver
end

To use the newly generated app in deliver, you need to add this line to your Deliverfile:

apple_id ENV['PRODUCE_APPLE_ID']

This will tell deliver, which App ID to use, since the app is not yet available in the App Store.

You'll still have to fill out the remaining information (like screenshots, app description and pricing). You can use deliver to upload your app metadata using a CLI

How is my password stored?

produce uses the password manager from fastlane. Take a look the CredentialsManager README for more information.

Tips

fastlane Toolchain

  • fastlane: The easiest way to automate beta deployments and releases for your iOS and Android apps
  • deliver: Upload screenshots, metadata and your app to the App Store
  • snapshot: Automate taking localized screenshots of your iOS app on every device
  • frameit: Quickly put your screenshots into the right device frames
  • pem: Automatically generate and renew your push notification profiles
  • sigh: Because you would rather spend your time building stuff than fighting provisioning
  • cert: Automatically create and maintain iOS code signing certificates
  • spaceship: Ruby library to access the Apple Dev Center and iTunes Connect
  • pilot: The best way to manage your TestFlight testers and builds from your terminal
  • boarding: The easiest way to invite your TestFlight beta testers
  • gym: Building your iOS apps has never been easier
  • scan: The easiest way to run tests of your iOS and Mac app
  • match: Easily sync your certificates and profiles across your team using git
Like this tool? Be the first to know about updates and new fastlane tools

Need help?

Please submit an issue on GitHub and provide information about your setup

Code of Conduct

Help us keep produce open and inclusive. Please read and follow our Code of Conduct.

License

This project is licensed under the terms of the MIT license. See the LICENSE file.

This project and all fastlane tools are in no way affiliated with Apple Inc. This project is open source under the MIT license, which means you have full access to the source code and can modify it to fit your own needs. All fastlane tools run on your own computer or server, so your credentials or other sensitive information will never leave your own computer. You are responsible for how you use fastlane tools.