Building Maxscale on Virtual Machine with MDBCI

MDBCI is a tool to manage virtual machines (VM). VM can be described in the simple JSON format. JSON templates can be found in BUILD/mdbci/templates

MDBCI_VM_PATH have to be set before executing any MDBCI commands. This variable points to the directory to store 'Vagrantfile's for all VMs as well as all additional files (e.g. *network_config)

libvirt/qemu and AWS VMs are supported.

See MDBCI README for details.

Installation instructions: PREPARATION_FOR_MDBCI

Build script

BUILD/mdbci/build.sh prepares VM, executes Maxscale build and creates binary RPM or DEB repository.

Build options can be defined in the environmental variables. For variables descriptions and default values see comments in the BUILD/mdbci/build.sh and BUILD/mdbci/set_build_variables.sh

Script does not store build log, please use stdout and stderr redirection to store log.

Default build

BUILD/mdbci/build.sh can be executed without defining any variable.

Prerequirements:

  • MDBCI installed
  • Vagrant and vagrant-libvirt plugin installed
  • $HOME/maxscale_gpg_keys/ directory contains one public and one corresponding private key (files with .public and .private extensions)
  • $HOME/team_keys file contains public keys to be installed to VM

By default VM will not stay alive after the build. Please use export do_not_destroy_vm=yes to prevent VM from being destroyed. In this case VM have to be destroyed manually by mdbci destroy command.

VM will be created in $HOME/vms directory, binary repository will be created the in $HOME/repository/ directory. The name of binary repository sub-directory is generated based on source default branch name and current date and time.

Upgrade test

If run_upgrade_test variable set to yes the upgrade test will be executed after the build. Upgrade test includes installation of old version of Maxscale from [production repository] (https://downloads.mariadb.com/MaxScale/) and upgrading it to recently built version.

The old version can be defined in old_target variable.

Upgrade test starts Maxscale with only one service - CLI and tries to execute 'maxadmin' command. If this command exits with success ('0') upgrade test reports PASSED.

Build with AWS VM

To build using AWS VM it is necessary to configure AWS credentials and install vagrant-aws plugin. AWS credentials have to be configured in the $HOME/.aws directory as described in the AWS CLI documentation

Example of build


# see https://github.com/mariadb-corporation/mdbci/tree/integration/BOXES
# for available boxes
export box="ubuntu_xenial_libvirt"

# 'source'can be any reference to the Maxscale repo
# examples:
#    source="refs/tags/2.1.1" - tag "2.1.1"
#    source="refs/heads/develop" - "develop" branch
#    source="2.1" - can be branch or tag "2.1"
#                   (use refs/tags and refs/heads if there are
#                    both tag "2.1" and branch "2.1")
#    source="816983691af8fbded1b2b06a8c19e02587a54f32" - commit ID
export source="2.2"

# the name of binary repository
export target="2.1-2018Jan10"

cd BUILD/mdbci
./build.sh