[Development] New Coin feature: automatic provisioning

Dominik Holland 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:
> Hi,
>   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 
> needed
>   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).
> Cheers,
>   Jędrek
> 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
> http://lists.qt-project.org/mailman/listinfo/development

Dominik Holland

Pelagicore AG
Balanstr. 55, 81541 Munich, Germany
+49 (0)171 760 25 96
dominik.holland at pelagicore.com

More information about the Development mailing list