- 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
Important
Currently in open beta and free to use. It will always be free for most solo devs.
- A Godot 3.6 or 4.x game
- Node.js version 18.0 or above
- To publish an Android game - a Play Console developer account (not required for building an APK/AAB)
- To build an iOS game - an Apple Developer account
Install via the NPM package manager:
npm install -g shipthis
Set up an account with ShipThis by logging in for the first time using the shipthis login
command.
shipthis login
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):
shipthis game wizard android
Watch: Set up ShipThis for Android
shipthis game wizard ios
Now you can publish new versions of your game to TestFlight or Google Play with the shipthis game ship
command:
shipthis game ship
- Having issues? Check the Troubleshooting or join our Discord
- For detailed documentation, visit shipth.is/docs
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.
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.
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
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.
Currently free while in open beta. Planned pricing is on the pricing page.
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
-
Creating a new ShipThis game
shipthis game create --name "Pay2Lose" --androidPackageName "com.pay.two.lose"
-
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 -
Connecting ShipThis with Google
Once connected, ShipThis can generate a Service Account API Key for automatic publishing.
shipthis game android apiKey connect
-
Create a Service Account and API Key
shipthis game android apiKey create
-
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
-
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.
-
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
-
Create a new ShipThis game
shipthis game create --name "Tap to Win Nothing" --iosBundleId "com.tap.to.win.nothing"
-
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
-
Create an App Store Connect API Key
ShipThis uses this API key to submit new versions of your game.
shipthis apple apiKey create
-
Create an iOS Distribution Certificate
This certificate is used to sign your game on the ShipThis build servers.
shipthis apple certificate create
-
Create an App Store App and BundleId
shipthis game ios app create
-
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
-
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
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.
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.
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
- 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.
- 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
- π¬ Join us on Discord
- π Report an issue
- π£ Feature ideas? Feedback? Weβd love to hear from you - email support@shipth.is