Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/insality/defold-deployer
Universal build && deploy script for Defold projects
https://github.com/insality/defold-deployer
build defold defold-game-engine scripts
Last synced: 3 months ago
JSON representation
Universal build && deploy script for Defold projects
- Host: GitHub
- URL: https://github.com/insality/defold-deployer
- Owner: Insality
- License: mit
- Created: 2019-06-12T06:25:01.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2024-02-20T19:52:01.000Z (11 months ago)
- Last Synced: 2024-11-02T06:05:05.061Z (3 months ago)
- Topics: build, defold, defold-game-engine, scripts
- Language: Shell
- Homepage:
- Size: 196 KB
- Stars: 36
- Watchers: 4
- Forks: 0
- Open Issues: 6
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
![](defold-deployer.png)
[![GitHub release (latest by date)](https://img.shields.io/github/v/release/insality/defold-deployer?style=for-the-badge)](https://github.com/Insality/defold-deployer/releases)
# Defold Deployer
Universal build && deploy script for *Defold* projects (Android, iOS, HTML5, Linux, MacOS, Windows)
**Deployer** is configurable via settings_deployer file. It's allow use single deployer script for different projects## Features
- Single deployment script on all Defold projects (Android, iOS, HTML5, Linux, MacOS, Windows)
- One command to build, deploy and read logs from the mobile
- Global and custom settings on project (provisions, bob version, etc)
- Useful build output
- Save your time on preparing debug && release builds
- Nice naming builds to save history of product versions
- Auto *bob.jar* downloading. Flag **use_latest_bob** for using always last version of *Defold*
- Select Bob channel (stable/beta/alpha) and Defold build server via settings file
- Headless build && run for your unit-tests on CI _[here example](https://github.com/Insality/druid/blob/develop/.github/workflows/ci-workflow.yml#L20)_
- Add additional info to *game.project*: *project.commit_sha* and *project.build time*
- Android Instant build in one command (`deployer abr --instant`)
- Redownload dependencies, if they are corrupted
- [Optional] Build stats history with build size, build time and other info
- [Optional] Local build cache and separate build folder to prevent cache reset
- [Optional] Use incremental value for last number in version and android.version_code (enable via _enable incremental version_, _enable_incremental_android_version_code_)
- [Optional] Pre and post build hooks## Install
For bob build tool you need to install java JDK: https://openjdk.java.net/projects/jdk/11/For ios deploy by cable you need to install:
- *ios-deploy*: https://github.com/ios-control/ios-deployFor android deploy and read logs you need to install:
- *adb*: https://developer.android.com/studio/releases/platform-toolsFor running `bob.jar` you need to install:
- *java*: https://openjdk.java.net/projects/jdk/11/For HTML5 builds you need to install:
- Deployer use `zip` command to pack HTML5 build into zip file
- Deployer use `python 2` to run HTTP Server for deployFor building Android Instant you need to make prepare:
- *Insctructions*: [https://forum.defold.com/t/instruction-android-instant-app-creation/48471](https://forum.defold.com/t/instruction-android-instant-app-creation/48471)
- Deployer use `zip` command to prepare bundle for _Google Play_## Setup
Run `deployer.sh` inside your `game.project` folder.To create your settings file, just copy `setting_deployer.template` with name `settings_deployer` and place it in right place:
- **Global settings** - `settings_deployer` file nearby `deployer.sh` script
- **Custom project settings** - `settings_deployer` file nearby `game.project` fileCustom projects settings will override your global settings
#### Recommendation
Make link to `deployer.sh` file in your system path with name `deployer` (via `ln -s deployer.sh deployer`)Add execution mode to it via `chmod +x`
Place your **global settings** file nearby new `deployer` file link
Call it in your project folder like: `deployer abd`
## Usage
`bash deployer.sh [a][i][h][w][l][m][r][b][d] [--fast] [--resolve] [--instant] [--settings {filename}] [--headless]`
- `a` - add target platform Android
- `i` - add target platform iOS
- `h` - add target platform HTML5
- `w` - add target platform Windows
- `l`- add target platform Linux
- `m` - add target platform MacOS
- `r` - set build mode to Release
- `b` - build project (game bundle will be in ./dist/bundle/ folder)
- `d` - deploy bundle && run to connected device. Auto start logging from connected device
- `--settings {filename}` - add settings file to build params. Can be used several times
- `--fast` - build only one Android platform (for faster builds)
- `--headless` - set mode to headless. Override release mode
- `--resolve` - build with dependency resolve
- `--instant` - it preparing bundle for Android Instant Apps. Always in release modeBundle files will be located at *./dist/bundle/{Version}/*
If no version found in `game.project`, it will be *0.0.0* as default
Deployer need to run on root of your Defold project
Filename will be name {ProjectName}\_{Version}\_{BuildMode}.[apk|ipa]
## Examples
```bash
# Build, deploy and run Android bundle
deployer.sh abd
# Deploy and run iOS release bundle
deployer.sh ird
# Build Android and iOS release bundles
deployer.sh aibr
# Build and run HTML5 debug build
deployer.sh hdb
# Build and preparing Android Instant Apps bundle
deployer.sh ab --instant
# Build, deploy and run Android bundle in fast mode (useful for testing)
deployer.sh abd --fast
# You can pass params in any order you want, for example:
# Same behaviour as aibr
deployer.sh riba
# Build MacOS debug build and run it
deployer.sh mbd
# Build linux headless build with unit_test.txt settings and run it
deployer.sh lbd --settings unit_test.txt --headless
# Build Windows release build
deployer.sh wbr
```## Deployer parameters
- **Global settings** setup by `settings_deployer` file nearby with deployer script
- **Custom project settings** setup by `settings_deployer` file nearby your `game.project` file on root of your project:Copy `settings_deployer.template` with name `settings_deployer` and change it for your needs
Deployer parameters:
```bash
# Path to bob folder. It will find and save new bob.jar files inside
bob_folder={path_to_bob_folder}# Path to android keystore for debug
android_keystore_dev={path_to_keystore.jks}# Path to android keystore for release
android_keystore_dist={path_to_keystore.jks}# Path to android keystore password for debug. This file should contains keystore password
android_keystore_password_dev="{path_to_keystore_password.txt}"# Path to android keystore password for release. This file should contains keystore password
android_keystore_password_dist="{path_to_keystore_password.txt}"# Name of alias from provided keystore to use for android development build
android_keystore_alias_dev="keystore_alias"# Name of alias from provided keystore to use for android release build
android_keystore_alias_dist="keystore_alias"# ID of your ios development identity
ios_identity_dev="AAXBBYY"# ID of your iod distribution identity
ios_identity_dist="YYBBXXAA"# Path to ios development mobileprovision
ios_prov_dev={path_to_ios_dev.mobileprovision}# Path to ios distribution mobileprovision
ios_prov_dist={path_to_ios_dist.mobileprovision}# You can point bob version for project in format "filename:sha"
bob_sha="184:1f5712609c345f870b691a85d611d4825d22a718"# Select Defold channel. Values: stable, beta, alpha
bob_channel="stable"# If true, it will check and download latest bob version. It will ignore bob_sha param
use_latest_bob=false# Select Defold build server
build_server="https://build.defold.com"# Pre-build hook bash script path. The path relative from game project folder
pre_build_script=false# Post-build hook bash script path. The path relative from game project folder
post_build_script=false# Set patch (last value after dot) game version value as total git commits count (1.2.0 -> 1.2.{commits_count})
# You allow to get SHA commit from version via: git rev-list --all --reverse | sed -n {N}p
enable_incremental_version=false# Use git commits count as android.version_code on build
enable_incremental_android_version_code=false# Local resource cache folder for deployer script. This folder will be added to gitignore if exists
resource_cache_local=".cache_deployer"# If true, add `-l yes` build param for publish live content
is_live_content=false# Set to true, if you do not need to strip executables
no_strip_executable=false# Is need to build html report
is_build_html_report=false# Enable to start record build stats of every deployer build in csv format
build_stats_report_file="./deployer_build_stats.csv"# Android instant app settings.ini path to override
# (Usually, you need it to override AndroidManifest.xml)
# See instruction here: https://forum.defold.com/t/instruction-android-instant-app-creation/48471
android_instant_app_settings={path_to_android_settings_ini}# SDK path to build Android Instant app
sdk_path={path_to_android_sdk}# Path to android signature key for release (Since Defold 174 only using for Android Instant games)
android_key_dist={path_to_key.pk8}# Path to android signature certificate for release (Since Defold 174 only using for Android Instant games)
android_cer_dist={path_to_certificate.pem}
```## Author
Maxim Tuprikov, [Insality](http://github.com/Insality)
**MIT** License## Issues and suggestions
If you have any issues, questions or suggestions please [create an issue](https://github.com/Insality/druid/issues) or contact me: [[email protected]](mailto:[email protected])