Development

Contributions are welcome from anyone. This section provides guidelines for setting up your environment to run a development copy of MTDA on your system without requiring special hardware either using Docker or KVM.

Docker

Docker is a popular container technology and it may be used as a virtual test platform to develop general purpose tests or APIs for MTDA.

MTDA requires several Python packages, it is recommended to install them using pip and under your user to leave your system intact. Use apt to install pip:

$ sudo apt-get install -y python3-pip

and modify your environment to have the shell look for programs in $HOME/.local/bin:

$ echo 'export PATH=$HOME/.local/bin:$PATH' >> ~/.bashrc

The docker engine may be installed as follows on Debian:

$ sudo apt-get install -y docker.io
$ sudo /sbin/adduser $USER docker
$ sudo systemctl enable docker
$ sudo systemctl start docker

It is recommended to leave your session and start a new one if your user account did not belong to the docker group before. You may then check if docker is up and running:

$ docker images

You may then get a copy of the MTDA code with:

$ git clone https://github.com/siemens/mtda

and required Python packages and MTDA may be installed with:

$ cd mtda
$ pip3 install --user .

A configuration file is then needed for MTDA to use the various docker drivers using the MTDA_CONFIG environment variable.

The agent may then be started with:

$ export MTDA_CONFIG=$PWD/configs/docker.ini
$ export PYTHONPATH=$PWD
$ ./mtda-service -n

Use a different shell to start a client session:

$ cd mtda
$ export MTDA_CONFIG=$PWD/configs/docker.ini
$ export PYTHONPATH=$PWD
$ ./mtda-cli target on
$ ./mtda-cli

The container should be running. Hit return to get a shell prompt and run any shell commands available in the container selected in your MTDA_CONFIG file.

Release Process

There are certain steps that needs to be done when making a release. This checklist here serves as guidance to the one in charge of making a new release. Roughly start with this 2-3 weeks before the targeted release date.

When

Action

Example

-3w

Create -tc1 tag

v0.16-tc1

-3w

Inform maintainers about upcoming release

-1w

Collect Tested-by: tags

-1w

Draft debian/changelog

-1w

Create -rc1 tag

v0.16-rc1

0d

Create release tag

v0.16

0d

Move open issues to next milestone

0d

Send release announcement

0d

Create new version in debian/changelog suffixed with “-0” (e.g. 0.18-0)

GitHub actions will build the final release tag and upload artifacts such as Debian packages to fury.io and Ubuntu packages to our PPA.