Faster Delivery of Large C/C++ Projects with Conan Package Manager and Efficient Continuous Integration
Play Faster Delivery of Large C/C++ Projects with Conan Package Manager and Efficient Continuous Integration
Dependency information together with the smart management of binaries and binary compatibility of Conan package manager can be used to implement a modularized, fast and efficient Continuous Integration (CI) process for large C and C++ projects. This CI system knows what needs to be rebuilt, what can be built in parallel, and how to transparently manage build dependencies as testing frameworks or toolchains (such as cross-compilation to Android). This talk will present a CI system, implemented for Jenkins (but which could be implemented in other CI systems too), that using the dependency graph provided by the package manager, is able to trigger dependent packages' build jobs, and only those transitively affected by the change, in the correct build order. Furthermore, the build jobs are arranged in concurrency levels, by the degree/ordering in the graph, but also for different configurations, so optimal build parallelism can be achieved. Also such dependent packages can define custom rules to decide to build themselves or not, depending on configuration or versioning criteria. Everything will be fully demonstrated in practical examples. We will also present advanced CI techniques, such as how to create packages for tools, like testing frameworks, to lately inject them as build-requirements to other libraries. Moreover, the process can also automate the installation and transparent usage of complete toolchains, like cross compiling C/C++ to Android with the Android NDK toolchain, to achieve a process that is convenient for developers and highly repeatable.