This is the multi-page printable view of this section. Click here to print.
Packages
- 1: Usage
- 2: Development
1 - Usage
Overview
After you have set up the .velocitas.json
for your
project configuration
, using packages is pretty straight forward.
Currently, the packages provided by the Velocitas team are the following:
name | description |
---|---|
devenv-runtimes | Containing scripts and configuration for Local and Kanto Runtime Services |
devenv-devcontainer-setup | Basic configuration for the devcontainer, like proxy configuration, post create scripts, entry points for the lifecycle management. |
devenv-github-workflows | Containing github workflow files used by velocitas repositories |
devenv-github-templates | Containing github templates used by velocitas repositories |
devenv-runtime-local | Central configuration for local runtime execution (deprecated) |
devenv-runtime-k3d | Central configuration for k3d runtime execution (deprecated) |
To see how these provided packages are used inside a .velocitas.json
you can use the
Python template repository
as a reference.
Installation
The Velocitas CLI - acting as a package manager for Vehicle App repositories - is installed inside our devcontainer-base-images . After creation of a devcontainer a postCreateCommand is configured to be executed which runs:
velocitas init
which will initialize all packages referenced in your.velocitas.json
. That means, it will download them and run their respective onPostInit programs, if any. (e.g, automated model generation )velocitas sync
to sync files provided by some packages.
Check the section about our Velocitas CLI to learn more about the background and usage of it.
Velocitas Home Directory
The packages will be downloaded by the
Velocitas CLI
to ~/.velocitas/packages/<package_name>
. More Information:
VELOCITAS_HOME
.
Next steps
- Lifecycle Management: Development of Packages
- Lifecycle Management: Velocitas CLI
2 - 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