Development
Getting started
First thing you need to do is to create a repository at e.g., https://github.com/my-organisation/my-velocitas-package
. The URL needs to be referenced in the .velocitas.json
of your Vehicle App repository.
General configuration of Packages
Every Package repository needs a manifest.json
at their root. The manifest.json
is the package configuration and holds package relevant information and its behaviour.
Here are examples of this configuration:
The manifest of a package describes a list of components. They are a collection of programs or files that serve a similar purpose or are inheritly connected. I.e. they provide a single runtime, a deployment for a runtime or add configuration required for Github Workflows or the devcontainer.
More detailed information and explanation about configuration fields of the manifest.json
and package development can be found
here
.
Configuration of Runtime Packages
If you want to add a new service, adapt
runtime.json
and
manifest.json
. In order to use a newly created or updated service, new changes on
devenv-runtimes
need to be tagged and referenced inside
.velocitas.json
of the respective package version via a tag or branch name of the repository. When a version is changed in your
.velocitas.json
you have to initialize it through velocitas init
from the terminal so the new package version will be installed. A new service can be started by using velocitas cli command velocitas exec runtime-local <service_id> <args>
which can be also configured inside your ./.vscode/tasks.json
.
If you plan to develop a Package with the purpose of managing the runtime used together with your Vehicle App the package needs a runtime.json
at their root. The runtime.json
is the runtime configuration containing all information for the relevant service dependencies with the following three required attributes:
Property | Description |
---|---|
id | unique service id |
interfaces | used for dependency resolution between Vehicle App and runtime |
config | configurations in form of Key/Value pair with specific pre–defined keys and corresponding values |
Supported config keys of a service
Key | Value Description |
---|---|
image | URI of a container image |
port | port number |
port-forward | port mapping for forwarding |
env | environment variable used by the service: <env_key>=<env_value> |
mount | path for mounting files: <source_path>:<target_path> |
arg | argument for starting the service |
start-pattern | optional start pattern for identifying if the service starts correctly |
Runtime configuration helper
{
"id": "<service_id>",
"interfaces": [
"<interface>"
],
"config": [
{
"key": "image",
"value": "<image>:<tag>"
},
{
"key": "port",
"value": "<port_number>"
},
{
"key": "port-forward",
"value": "<source_port>:<target_port>"
},
{
"key": "env",
"value": "<env_key>=<env_value>"
},
{
"key": "mount",
"value": "<source_path>:<target_path>"
},
{
"key": "arg",
"value": "<arg>"
},
{
"key": "start-pattern",
"value": ".*Listening on \\d+\\.\\d+\\.\\d+\\.\\d+:\\d+"
}
]
}
In order to use a newly created or updated service, changes on the respective Package need to be tagged and referenced inside the
.velocitas.json
of your Vehicle App repository via a tag or branch name of the repository. More info about installation:
Usage
.
Note
A new service can be started manually and/or configured inside your./.vscode/tasks.json
with:
velocitas exec runtime-<runtime> <service_id> <args>
Next steps
- Lifecycle Management: Velocitas CLI