Skip to content
/ cli Public

CLI to build and publish Godot games to the App Store and Google Play - no Xcode or Android Studio required.

License

Notifications You must be signed in to change notification settings

shipth-is/cli

Repository files navigation

ShipThis discordShipThis

  • Build and publish Godot mobile games to the App Store and Google Play
  • Handles certificates, keystores, API keys, and provisioning profiles
  • Cloud builds are free for most solo-devs

ShipThis Command - ship output

Important

Currently in open beta and free to use. It will always be free for most solo devs.

Quick start

Requirements

1. Install ShipThis

Install via the NPM package manager:

npm install -g shipthis

2. Create an account

Set up an account with ShipThis by logging in for the first time using the shipthis login command.

shipthis login

3. Set up your game

Run the wizard command to configure your game on ShipThis. The command takes a platform parameter - this can be either android or ios. Run this command from within a Godot game directory (with a project.godot file):

Set up an Android game

shipthis game wizard android
Watch: Set up ShipThis for Android

ShipThis Command - Android Wizard - published game

Set up an iOS game

shipthis game wizard ios
Watch: Set up ShipThis for iOS

Watch the iOS setup video

4. Ship

Now you can publish new versions of your game to TestFlight or Google Play with the shipthis game ship command:

shipthis game ship

FAQ

Do I need a Mac to build for iOS?

No, you do not need a Mac, but you will need an Apple Developer Account.

ShipThis handles iOS builds on managed macOS cloud servers. The CLI connects to the Apple Developer Portal and sets everything up for you.

Which versions of Godot are supported?

We support all stable Godot versions since 3.6, including:

3.6 4.0 4.1 4.2 4.3 4.4
3.6.1 4.0.1 4.1.1 4.2.1 4.4.1
4.0.2 4.1.2 4.2.2
4.0.3 4.1.3
4.0.4 4.1.4

You can read more in our Godot versioning guide.

Can I build my game as APK without a Google Play account?

Yes.

Running the wizard command will create a Service Account Key for automatic publishing, but you might not need this when initially building your game.

You can create a ShipThis account, create the game, create a keystore, and then run the ship command. Later, when you need to set up publishing, you can re-run the wizard command.

# Create a ShipThis game - run this in a dir with a project.godot file
shipthis game create --name "My Game" --androidPackageName "com.my.game"

# Create a keystore for signing the APK
shipthis game android keyStore create

# Run the build, skip the publish step, and download as game.apk
shipthis game ship --follow --platform android --skipPublish --downloadAPK game.apk

Do I need to create an export_presets.cfg file?

No, the ShipThis build server will generate a valid export_presets.cfg for your game.

If you provide an export_presets.cfg file, the desired preset values will be merged with the generated file.

How much does it cost to use ShipThis?

Currently free while in open beta. Planned pricing is on the pricing page.

What does the shipthis game wizard do?

The wizard command runs different steps for Android and iOS. Each "step" is another ShipThis command - meaning you can run each step by itself. The wizard can be re-run any number of times.

The Android steps are described in the Android set-up guide. The iOS steps are described in the iOS setup guide.

The commands run for Android
  1. Creating a new ShipThis game

    shipthis game create --name "Pay2Lose" --androidPackageName "com.pay.two.lose"
  2. Creating or importing an Android Keystore

    To create a new Keystore:

    shipthis game android keyStore create

    To import an existing Keystore see the docs for the shipthis game android keyStore import command

  3. Connecting ShipThis with Google

    Once connected, ShipThis can generate a Service Account API Key for automatic publishing.

    shipthis game android apiKey connect
  4. Create a Service Account and API Key

    shipthis game android apiKey create
  5. Create and download an initial build (AAB file)

    When you first create your game in the Google Play Console, you will be asked to upload an initial build in AAB format.

    shipthis game ship --platform android --follow --skipPublish --download game.aab
  6. Create an app in the Google Play Console

    You will need to manually create the game itself in Google Play. This will involve entering the name, agreeing to Google Play's TOS and uploading an initial build.

  7. Invite the Service Account

    Before the Service Account API Key can submit your games automatically, you will need to invite the Service Account to your Google Play account. To do this you will need your Google Play Account ID.

    shipthis game android apiKey invite XXXXXXXXX
The commands run for iOS
  1. Create a new ShipThis game

    shipthis game create --name "Tap to Win Nothing" --iosBundleId "com.tap.to.win.nothing"
  2. Connect ShipThis with Apple

    We recommend enabling 2FA for your account. ShipThis generates a session cookie for communicating with the Apple Developer Portal.

    shipthis apple login
  3. Create an App Store Connect API Key

    ShipThis uses this API key to submit new versions of your game.

    shipthis apple apiKey create
  4. Create an iOS Distribution Certificate

    This certificate is used to sign your game on the ShipThis build servers.

    shipthis apple certificate create
  5. Create an App Store App and BundleId

    shipthis game ios app create
  6. Synchronize Permissions (Capabilities)

    ShipThis reads export_presets.cfg and enables supported capabilities in the Apple Developer Portal (currently Access WiFi, Push Notifications).

    shipthis game ios app sync
  7. Create a Provisioning Profile

    Required to run on devices and for distribution. You can view profiles at Apple’s portal: https://developer.apple.com/account/resources/profiles/list

    shipthis game ios profile create
Watch: The wizard run for Android

ShipThis Command - Android Wizard - published game

Watch: The wizard run for iOS

Watch the iOS setup video

How do I debug a failed build?

If a build fails, rerun it for only the failing platform with the --follow flag to view the logs in real time:

shipthis game ship --platform android --follow

For additional debugging, you can include the --verbose flag - this enables detailed logging locally and on the build server, including running the Godot export with verbose output:

shipthis game ship --platform ios --follow --verbose

You can review logs at any time in the dashboard under the "Jobs" tab.

See the Troubleshooting Guide for common checks.

If the issue persists, we can help you directly in our Discord.

Does ShipThis work with CI/CD pipelines?

Yes. ShipThis works with CI/CD pipelines, allowing you to run automated builds without an interactive shell.

To get started, create an API key, for your pipeline environment:

# API keys can have a maximum lifetime of 1 year
shipthis apiKey create --durationDays 365 --name ci-key

The secret value will only be displayed once and this can be used as an environment variable called SHIPTHIS_TOKEN.

export SHIPTHIS_TOKEN=your_token_here
shipthis game ship --platform android --follow
shipthis game ship --platform ios --follow

For GitHub users, we provide an official GitHub Action for easy integration: https://github.com/shipth-is/action

See the API Keys documentation for more information.

How are my credentials stored and secured?

ShipThis uses short-lived, signed URLs and ephemeral build environments.

  • Credentials are stored in a private DigitalOcean Space.
  • Every access is logged for a full audit trail.
  • When a build starts, credentials are fetched on-demand and loaded as environment variables.
  • Temporary files are created only if needed and cleaned up when the job finishes.

We store:

  • Android Keystores
  • Google Play Service Account API keys
  • iOS provisioning profiles
  • App Store Connect API keys
  • iOS distribution certificates

πŸ“– Command Reference

πŸ—‚ Topics

  • apiKey - Commands related to ShipThis API Keys
  • apple - Commands that relate to linking your ShipThis account with your Apple Developer Account
  • game - Commands that relate to configuring the specific game in the current working directory.

πŸ”§ Commands

  • dashboard - Opens the web browser to your shipth.is dashboard
  • login - Sign in or create a new account
  • status - Display your overall ShipThis account status
  • help - Display help for a specific topic or command

🌍 Community

About

CLI to build and publish Godot games to the App Store and Google Play - no Xcode or Android Studio required.

Topics

Resources

License

Stars

Watchers

Forks

Languages