Details
-
Epic
-
Resolution: Fixed
-
P2: Important
-
None
-
master
-
None
-
Product support in Coin
Description
We have qt projects that have multiple dependencies to other products, such as
- qt-automotive
- qtcreator
- ...
but we cannot build these modules in CI, because it currently supports only building 1 product as dependency.
the objective is to make is possible and simple to configure coin to build arbitrary "products".
the main milestones:
- introduce generic "products", and a way to express arbitrary dependencies between them.
- reduce number of workitem types. in particular, do away with provisioning items. instead, platform images are just products themselves and are simply built via builditems.
- implement a flexible configuration system and migrate the existing specialized config files and hard-coded rules to this new system.
This epic is the placeholder for all work that is required to integrate the changes to build multiple products in CI.
[Iikka] Proposal for concrete steps:
Step1: Base functionality to run a build for Platform product (~6-8 weeks)
- Product Configuration interface https://codereview.qt-project.org/#/c/237967/
- Product Type class loader https://codereview.qt-project.org/#/c/221919/
- This includes ProductType_platform.py + PlatformBuildItem (a.k.a. current Provision(Work)Item)
- Synthesize Platform product "ProductConfiguration" objects (i.e. test/build configurations) https://codereview.qt-project.org/#/c/238666/
- Refactor WorkItemFactory https://codereview.qt-project.org/#/c/238650/
-
- Will instantiate the Product Type of the product and execute the build graph i.e. creation of WorkItems
- "ProductConfiguration" properties are strings (OS, OS_VERSION, ARCH, etc.) but Coin expects to have enums (int): https://codereview.qt-project.org/#/c/236940/
Expected outcome:
- Basic structure to execute a simple build (workitemfactory replacement)
- Provisioning executed with the new system, i.e. building the Platform product
Step2: Run a build for qt5 (~8-10 weeks)
- Minor adjustment into WorkItem interface: https://codereview.qt-project.org/#/c/239653/
- Keep compatibility with current system
- Split modules.py per product: https://codereview.qt-project.org/#/c/239357/
- Keep compatibility with current system
- Implement ProductType_qt5.py and ProductType_qt5_module.py
- For every forked-out submodule ProductConfiguration there already exist code to produce AgentInstructions (2)
- Create BuildItem and TestItem per forked-out submodule ProductConfiguration and set AgentInstructions directly (1)
- Synthesize qt5 configurations using the "ProductConfiguration" interface
- Implement "Build Context"
- Not covered at all yet (
QTQAINFRA-2209)
- Not covered at all yet (
- Run qt5 build
Expected outcome:
- qt5 build
Step3: Run a build for some product, e.g. tqtc-qt5 (~2 weeks)
- Synthesize "ProductConfiguration" objects: now we have product level depency chain: tqtc-qt5 -> qt5 -> platform
- Run the build for tqtc-qt5
Expected outcome:
- tqtc-qt5 build
- system should re-use existing qt5 and platform build artifacts (if using refs from previous builds/steps)
Step4: Translate current platform configurations from upstream into "ProductConfiguration" object tree (~4-6 weeks)
- While the parser is not functional yet we can translate the current parsed configurations into "ProductConfiguration" object tree and run the build
QTQAINFRA-2081
Expected outcome:
- A build executed based on the test configurations defined in actual qt5, but using the new Product Repo system
Step5:
Step6:
...
Attachments
Issue Links
- is required for
-
QT3DS-1317 Update wip/qt3dstudio/master to head of Qt 5.11
- Closed
-
QTQAINFRA-963 Build Creator with Coin
- Closed
-
QTQAINFRA-1147 Transfer Qt Creator builds from Jenkins to Coin
- Closed
-
QTQAINFRA-1149 Transfer IFW builds from Jenkins to Coin
- Closed
-
QTQAINFRA-1151 Transfer LicenseMgr builds from Jenkins to Coin
- Closed
-
QTQAINFRA-1153 Transfer B2Qt builds from Jenkins to Coin
- Closed
-
QTQAINFRA-1155 Transfer OnlineInstaller builds from Jenkins to Coin
- Closed
-
QTQAINFRA-1146 Transfer desktop builds from Jenkins to Coin
- Withdrawn
- relates to
-
QTQAINFRA-1016 write product configurations
- Closed
-
QTQAINFRA-1560 Coin Stability and Product Repository workshop
- Closed
- replaces
-
QTQAINFRA-1429 Extend Coin with ability to build packaging builds
- Closed
- mentioned in
-
Page Loading...