shipthis
v0.1.45
Published
Build and publish Godot games to the App Store and Google Play. Cloud builds for APK, AAB, and IPA - no Mac or Android Studio required.
Downloads
333
Readme
ShipThis
- Build iOS and Android binaries (APK, AAB, IPA) for your Godot game
- Publish to the App Store and Google Play when you are ready
- Automatically manages certificates, keystores, API keys, and provisioning profiles
- Free cloud builds for most solo devs
[!IMPORTANT] Currently in open beta and free to use. It will always be free for most solo devs.
Quick start
Requirements
- A Godot 3.6 or 4.x game
- Node.js version 18 or above
- To publish an Android game - a Play Console Developer account (not required for building an APK/AAB)
- To publish an iOS game - an Apple Developer account (not required for building an IPA)
1. Install ShipThis
Install via the NPM package manager:
npm install -g shipthis2. Create an account
Set up an account with ShipThis by logging in for the first time using the shipthis login command.
shipthis login3. Set up your game
Run the wizard command to configure your game on ShipThis; it will set up everything needed to automatically build and publish your Godot game.
The wizard command takes a platform parameter: either android or ios. Run the command from within a Godot game directory (with a project.godot file):
Set up an Android game
Read more about how ShipThis exports Godot Android games (Gradle vs legacy, APK/AAB output).
shipthis game wizard androidSet up an iOS game
shipthis game wizard ios4. Ship
Now you can publish new versions of your game to TestFlight or Google Play with the shipthis game ship command:
shipthis game ship- New to ShipThis? See the full Quick start guide
- Having issues? Check the Troubleshooting or join our Discord
- For detailed documentation, visit shipth.is/docs
FAQ
Do I need a Mac to build for iOS?
No, you do not need a Mac, but if you want to publish to TestFlight or the Apple App Store then 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 | 4.5 | 4.6 | | ----------------------------------------------------------------------- | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | | 3.6.1 | 4.0.1 | 4.1.1 | 4.2.1 | 4.3.1 * | 4.4.1 | 4.5.1 | 4.6.1 | | 3.6.2 | 4.0.2 | 4.1.2 | 4.2.2 | | 4.4.2 * | | | | | 4.0.3 | 4.1.3 | 4.2.3 * | | | | | | | 4.0.4 | 4.1.4 | | | | | | | | 4.0.5 * | 4.1.5 * | | | | | |
* Custom builds - maintained by us to support Android SDK 35 and 16 KB Google Play compatibility requirement.
You can read more in our Godot versioning guide.
Can I build my game as APK/AAB/IPA without an Apple or Google account?
Yes.
The wizard command is designed to generate your own credentials for signing and publishing, but you might not need this when initially building your game.
You can create a ShipThis account, create the game and then run the ship command using demo credentials. 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"
# Run the build, use demo credentials, and download as game.apk
shipthis game ship --follow --platform android --useDemoCredentials --downloadAPK game.apk
# Run the build, use demo credentials, and download as game.aab
shipthis game ship --follow --platform android --useDemoCredentials --download game.aab
# Run the build, use demo credentials, and download as game.ipa
shipthis game ship --follow --platform ios --useDemoCredentials --download game.ipaDo 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 is designed to set up everything you need to automatically build and publish your game to the Apple App Store or Google Play.
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 setup guide. The iOS steps are described in the iOS setup guide.
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 createTo import an existing Keystore see the docs for the
shipthis game android keyStore importcommandConnecting ShipThis with Google
Once connected, ShipThis can generate a Service Account API Key for automatic publishing.
shipthis game android apiKey connectCreate a Service Account and API Key
shipthis game android apiKey createCreate 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.aabCreate 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
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 loginCreate an App Store Connect API Key
ShipThis uses this API key to submit new versions of your game.
shipthis apple apiKey createCreate an iOS Distribution Certificate
This certificate is used to sign your game on the ShipThis build servers.
shipthis apple certificate createCreate an App Store App and BundleId
shipthis game ios app createSynchronize Permissions (Capabilities)
ShipThis reads
export_presets.cfgand enables supported capabilities in the Apple Developer Portal (currently Access WiFi, Push Notifications).shipthis game ios app syncCreate 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
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 --followFor 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 --verboseYou 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-keyThe 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 --followFor 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.
Can I use a Liquid Glass icon with my game on iOS?
ShipThis enables the use of Liquid Glass icons with your game. These can be applied in two ways:
- To a local iOS export of a Godot project
- using the command
shipthis util glass ios/output.xcodeproj MyIcon.icon
- using the command
- To a game built using the ShipThis build servers
- using the command
shipthis game details --liquidGlassIconPath ./Example.icon
- using the command
You can read more in our Liquid Glass icons guide.
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
What happens to my files when I run the command shipthis game ship?
Your game files are packaged, uploaded to private storage via a temporary signed URL, and made available to an ephemeral build machine. After the build completes, all files are cleaned up on the machine. Uploaded files and build outputs are retained for 30 days before automatic deletion.
Read the full How your code is handled guide for details.
📖 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.
- util - Utility commands that do not require authentication
🔧 Commands
- autocomplete - Set up shell tab-completion for commands, topics, and flags
- 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
📚 Guides
- Quick start - Get your first build running in minutes
- Android export methods - Gradle vs legacy builds, APK & AAB output
- Godot versioning - Supported Godot versions and custom builds
- How your code is handled - Upload, storage, and 30-day retention policy
- Liquid Glass icons - Use Liquid Glass icons with your iOS game
- Troubleshooting - Common issues and how to fix them
🌍 Community
- 💬 Join us on Discord
- 🐛 Report an issue
- 📣 Feature ideas? Feedback? We’d love to hear from you - email [email protected]
