86 lines
3.4 KiB
Markdown
86 lines
3.4 KiB
Markdown
# 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](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](https://github.com/mariadb-corporation/mdbci#mariadb-continuous-integration-infrastructure-mdbci) for details.
|
|
|
|
Installation instructions: [PREPARATION_FOR_MDBCI](https://github.com/mariadb-corporation/mdbci/blob/integration/PREPARATION_FOR_MDBCI.md)
|
|
|
|
## Build script
|
|
|
|
[BUILD/mdbci/build.sh](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](build.sh) and [BUILD/mdbci/set_build_variables.sh](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](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](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html)
|
|
|
|
## Example of build
|
|
|
|
```bash
|
|
|
|
# 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
|
|
```
|