npm install --save muletrain
Once the plugin is installed, set up all of the config values.
Muletrain depends on s3, follow the aws docs to set environment variables or a shared credentials file.
If you don't have environmental credentials set, the muletrain init
command will ask for a path to a credentials .json file.
npx muletrain init
Follow the prompts, this will create the file muletrain.config.json
in the root of your project directory.
{
"url": "https://bucket.s3.us-east-2.amazonaws.com/manifest.json",
"aws": {
"credentials": "./s3.json",
"bucket": "bucket",
"region": "us-east-2"
}
}
The init command will also let you create a new manifest.json file and bucket directly from the command line.
You will also need to add some values to your capacitor.config.json
file for the muletrain plugin.
{
"plugins": {
"Muletrain": {
"url": "https://bucket.s3.us-east-2.amazonaws.com/manifest.json",
"enableInDev": false,
"mode": "auto"
}
}
}
Option | Description |
---|---|
url |
The full url of the manifest file |
enableInDev |
If the plugin should handle deploys in the dev environment, defaults to false . If this is set to true , it will overwrite your local changes with the most recent release. |
mode |
The strategy for checking for and installing updates. Options are auto , background , manual |
Mode Options
auto
- the plugin will check with updates as soon as the app opens and will swap to the latest version as quickly as it can automatically.background
* - the plugin will check for updates as soon as the app opens, and will swap to the latest version on next app open.manual
* - the plugin will not do any checks or installations automatically, it will rely on the developer to call the necessary functions
* not built yet, do not use
The muletrain deploy
command will attempt to deploy to the configured S3 bucket, but most options can be overwritten with flags
npx muletrain deploy
Flag | Description |
---|---|
--id <string> |
Unique identifier for the specific deploy, defaults to the first 5 characters of the sha of the most recent git commit. |
-c , --channel <string> |
Release channel to deploy to, defaults to production |
--aws <string> |
Path to an aws json credentials file |
--stage |
Deploy the files to the local machine rather than uploading them to S3. Used to support self-hosted flows |
--url |
Override the url that the manifest is located |
--dir |
Directory where the production web build is located, defaults to ./build |
--ios-equivalent <string> |
Version of iOS binary that contains the same code as this deploy |
--ios-max <string> |
Version of the iOS binary that is the maximum which should install this web payload. Used to prevent older binaries from downloading incompatible web code. |
--ios-min <string> |
Version of the iOS binary that is the minimum which should install this web payload. Used to prevent newer binaries from downloading incompatible web code. |
--android-equivalent <string> |
Version of Android binary that contains the same code as this deploy |
--android-max <string> |
Version of the Android binary that is the maximum which should install this web payload. Used to prevent older binaries from downloading incompatible web code. |
--android-min <string> |
Version of the Android binary that is the minimum which should install this web payload. Used to prevent newer binaries from downloading incompatible web code. |
(note: all flags are optional)
It is recommeded that you handle builds and deploys of web payloads using github actions. See the .github/actions
folder to see the various build options