An application that runs on the Nextmv Platform must contain a file named app.yaml
which is known as the app manifest. This file is used to specify the execution environment for the app.
Additionally, the app must be executed from an entrypoint. The entrypoint of the app should be:
main
for Gomain.py
for Pythonmain.jar
for Java
You can port any custom app into the Nextmv Platform. You just need the app.yaml
manifest in the root of the project with the appropriate attributes and an adequate entrypoint.
Mandatory attributes
The app.yaml
manifest must contain the following attributes:
type
: the language type to use for the app.go
for Gopython
for Pythonjava
for Java
runtime
: the runtime to use for the app.files
: the files to include (or exclude) in the app. Globbing is supported so you may specify individual files or whole directories. Include the entrypoint of the app here. Some examples of supported glob patterns:**/*.py
: all Python files recursively!**/*.pyc
: exclude all Python compiled filesapp/**/*.py
: all Python files in theapp
directory.
Patterns are applied in order as they are defined.
Optional attributes
The app.yaml
manifest may contain the following optional attributes:
build
: contains build-specific attributes.command
: the command to run to build the app. This command will be executed without a shell, i.e., directly. The command must exit with a status of0
to continue the push process of the app to Nextmv Cloud. This command is executed prior to thepre-push
command.environment
: environment variables to set when running the build command given as key-value pairs. E.g.GOOS: linux
.
pre-push
: a command to run before the app is pushed to the Nextmv Cloud. This command can be used to compile a binary, run tests or similar tasks. One difference with what is specified underbuild
, is that the command will be executed via the shell (i.e.,bash -c
on Linux & macOS orcmd /c
on Windows). The command must exit with a status of0
to continue the push process. This command is executed just before the app gets bundled and pushed (after thebuild
command).python
(only for Python apps): contains further Python-specific attributes.pip-requirements
: path to arequirements.txt
file containing (additional) Python dependencies that will be bundled with the app.
configuration
: the configuration for your applicationoptions
: option configuration for your applicationstrict
: (default: false) an option configuration that will prevent your app from being run in Nextmv Cloud if you provide options outside of the ones configured initems
if validation enforcement isall
validation
: validation configuration for your applicationenforce
: (default: "none") the validation enforcement setting for your application, "all" will validate all options in the configuration foroption_type
,required
, andadditional_attributes
.
items
: the options you would like to configure on your application, a list of objects
Language Examples
Find basic examples of app.yaml
manifests for different languages below.
Furthermore, there are various examples of manifests in the context of complete apps from our community apps for all supported languages. Find the manifests themselves as a reference below.
go
apps
python
apps
java
apps
Option Item Configuration
Model options can be surfaced in a defined manner by specifying them in your app.yaml
. The available properties to define your option, its value schema and the control used to render it in Nextmv Console are outlined in the tables below.
Top-level properties
The following properties are available to be set on each option.
Property | Required | Type | Default | Description |
---|---|---|---|---|
name | yes | string | N/A | Identifier of your option. |
description | no | string | None | Description for your option. (The description will appear as a tooltip for the option in Nextmv Console.) |
required | no | boolean | false | Represents whether the options is required, used in validation. |
option_type | yes | string | bool | int |float | None | The expected type of the option value, used in validation. |
additional_attributes | no | object | None | Used by Nextmv Console and for option validation, select attributes are supported based on control_type (see additional attributes table below). |
default | no | Any | None | Default value applied to your application run if not set in other configuration based on options hierarchy. |
ui | no | object | None | Additional instruction for how the option is rendered in Nextmv Console (see UI properties table below). |
Supported controls by type
Certain UI controls can only be specified for a certain option types. The table below lists the valid control_types
depending on which option_type
has been defined.
Option type | Supported control types | Default |
---|---|---|
string | input , select | input |
bool | toggle | toggle |
int | input , slider | input |
float | input , slider | input |
additional_attributes
properties
The required and supported additional attributes on an option depend on the option and control type. The table below lists the available properties for additional_attributes
based on what is set for the option’s control_type
and option_type
properties.
Option type | Control type | Additional attribute | Required | Description |
---|---|---|---|---|
string | input | max_length | false | The maximum length of the string value |
min_length | false | The minimum length of the string value | ||
string | select | values | true | An array of strings for the select dropdown |
int | input | min | false | a minimum value for the option |
max | false | A maximum value for the option | ||
step | false | An interval for the input control | ||
int | slider | min | true | a minimum value for the option |
max | true | A maximum value for the option | ||
step | true | An interval for the input control | ||
int | select | values | true | an array of integers for the select dropdown |
float | input | min | false | a minimum value for the option |
max | false | A maximum value for the option | ||
step | false | An interval for the input control | ||
float | slider | min | true | a minimum value for the option |
max | true | A maximum value for the option | ||
step | true | An interval for the input control | ||
float | select | values | true | an array of integers for the select dropdown |
ui
properties
Property | Required | Type | Default | Description |
---|---|---|---|---|
control_type | no | See control_type properties table below. | input | If no control_type is specified, the default is to render the option as a text input. |
hidden_from | no | Array of roles. See hidden_from table below with list of available roles. | None | List of roles from which this option will be hidden in Nextmv Console. (Note that this feature is for the UI only.) |
ui.control_type
properties
The table below lists valid values for the control_type
property in the ui
block.
Value | Description |
---|---|
input | Standard text input field. |
select | Dropdown selection list. The options to select from are specified with values in additional_attributes . |
slider | Range slider control. |
toggle | Boolean toggle switch. |
ui.hidden_from
properties
The table below lists valid values for the array of roles in the hidden_from
property in the ui
block.
Value | Description |
---|---|
operator | operator role |
viewer | viewer role |
Example manifest configuration
Find an example of the configuration you can provide in your app.yaml
manifest.