[Development] New Coin feature: automatic provisioning
dominik.holland at pelagicore.com
Wed Jul 27 13:58:44 CEST 2016
Am 07/27/2016 um 01:47 PM schrieb Jędrzej Nowacki:
> Good news everyone! Last month we managed to deploy a new automatic
> provisioning system to Coin. What does it mean to you? Now you can modify
> existing VM templates used by Coin. Installing additional packages should be
> trivial and more or less safe from now.
> I. The goal:
> - Coin should use VMs with vanilla OS installations (aka base template)
> - Anything that needs to be installed in addition should be documented,
> reproducible in an automatic way (create a provisioned template)
> - templates may be only modified in such way that the _whole_ Qt still works
> on a VM create from it
> - It should not be required to log in to a VM to modify it
> II. So how it works now:
> Qt5 is our product repository. The product repository contains directory
> called "coin/provisioning", which contains provisioning scripts used against
> base templates to produce provisioned templates. When an integration starts on
> a certain platform, it checks for the directory. If base platform template
> name matches one of the subdirectories then all scripts in the subdirectory
> are used to provision the new template. Of course the result is cached and re-
> used for all integrations that needs it.
> III. Qt Developer oriented example:
> We need to install FooBar on Ubuntu 14.04
> 1. Prepare bash script that installs it:
> #!/bin/env bash
> # Package FooBar is need to ... and can be safely removed if ...
> apt install FooBar
> 2. Place it in the product repository (Qt5) in coin/provisioning/qtci-linux-
> Ubuntu-14.04-x86_64/ under foobar.sh name.
> 3. Commit it to the right branch (5.6..dev) depending where the package is
> 4. Get through the review, by default we do __not__ want any additional
> software on VMs, so you need to have a good reason to install something
> 5. Stage the change together with a recent submodule update
> 6. If it pass then you can enjoy FooBar in your code
> 7. Follow-up on Qt5 merges, to ensure that FooBar is installed in right
> branches and only in them
> Be aware that provisioning scripts are tested against Qt5 state while newly
> provisioned templates are used for all integrations. So technically it is
> possible to break stuff if Qt5 is old or if a breakage was integrated during
> Qt5 testing. In reality I do not think it would affect anyone, but that is why
> in point 5 I recommend to staging together with a recent submodule update.
> Currently only bash and powershell are supported.
> If you want to share a script between different platforms (for example
> Ubuntu 14.04, and Ubuntu 16.04) you place it in "coin/provisioning/common".
> Then you can call it from any other "coin/provisioning" subdirectory.
> The current naming convention for base templates is suboptimal and it will
> be changed in a reasonable future, but you should not worry about that, the
> process will be transparent (TM).
> ps. The feature consists of a few dozen patches and the probability says that
> there is at least one bug, so keep your eyes open.
great news !
Does the provisioning only work for the qt5 repository or does it also
work for each of the modules ?
E.g. Could there be a provisioning script in qtmultimedia, installing
some of the dependencies e.g. gstreamer1.0-dev ?
> Development mailing list
> Development at qt-project.org
SENIOR SOFTWARE ENGINEER
Balanstr. 55, 81541 Munich, Germany
+49 (0)171 760 25 96
dominik.holland at pelagicore.com
More information about the Development