Package: conan_sword_and_sorcery
Conan - Sword and Sorcery=========================[![coverage](https://gitlab.com/jgsogo/conan-sword-and-sorcery/badges/master/coverage.svg?job=coverage)](http://jgsogo.gitlab.io/conan-sword-and-sorcery/)[![pipeline](https://gitlab.com/jgsogo/conan-sword-and-sorcery/badges/master/pipeline.svg)](https://gitlab.com/jgsogo/conan-sword-and-sorcery/commits/master)> **Status**: beta version. Under developmentUtilities for [Conan The Frogarian](https://conan.io). At this moment it addressedfollowing tasks for your conan recipes:* [Travis CI](https://travis-ci.org/) integration (with docker).* [Appveyor](http://www.appveyor.com/) integration.* Batch build for all local profiles.This project is just a refurbish of [conan-package-tools](https://github.com/conan-io/conan-package-tools)which is officially maintained by conan team.To install, just type (or clone and install this repo):```shell$ pip install conan_sword_and_sorcery```Index-----* [Batch build](#batch-builds): `run_ci`- [Local console](#local-console)- [Continuous integration systems](#continuous-integration-systems)- [Upload packages](#upload-packages)Batch builds------------This is the main functionality, it allows you to build several configurations ofyour recipe and your compiler using one single command `run_ci`. It can be usedfrom your local machine and from continuos integration systems:```shell$ run_ci --helpusage: run_ci [-h] [-v] [--dry-run] [--options CONAN_OPTIONS][--username CONAN_USERNAME] [--channel CONAN_CHANNEL]conanfileRun CI for given conanfilepositional arguments:conanfile             Path to conanfile.pyoptional arguments:-h, --help            show this help message and exit-v, --verbose         increases log verbosity for each occurence.--dry-run             do not create package (won't compile recipes)--options CONAN_OPTIONScomma separated list of options from de conanfile.pyto conjugate--username CONAN_USERNAMEUsername for package referencexxx/x.y.z@<username>/xxxx--channel CONAN_CHANNELChannel for package referencexxx/x.y.z@xxxxxx/<channel>```After the compilation it will upload the packages if some conditions match (see below).### Local consoleWhen used from local console, it will look for all your profile files defined in your`CONAN_USER_HOME/profiles` directory and trigger a build for them. If any options aregiven it will explode those and generate all the available combinations, e.g.:```shell$ run_ci ..\conan-protobuf\conanfile.py --options=with_zlib,build_tests=== Conan - Sword & Sorcery ===All combinations sum up to 8 jobsJobs to run...+---------------+-----------+--------+--------------+-----------+---------------+-------------+| id            |   version | arch   | build_type   | runtime   | build_tests   | with_zlib   ||---------------+-----------+--------+--------------+-----------+---------------+-------------|| Visual Studio |        14 | x86_64 | Debug        | MDd       | True          | True        || Visual Studio |        14 | x86_64 | Debug        | MDd       | True          | False       || Visual Studio |        14 | x86_64 | Debug        | MDd       | False         | True        || Visual Studio |        14 | x86_64 | Debug        | MDd       | False         | False       || Visual Studio |        14 | x86_64 | Release      | MD        | True          | True        || Visual Studio |        14 | x86_64 | Release      | MD        | True          | False       || Visual Studio |        14 | x86_64 | Release      | MD        | False         | True        || Visual Studio |        14 | x86_64 | Release      | MD        | False         | False       |+---------------+-----------+--------+--------------+-----------+---------------+-------------+[...]```### Continuous integration systemsFor CI systems jobs are driven using environment variables, same as conan-package-tools,so your existing `appveyor.yml` and `.travis.yml` files should work out of the boxafter installing this package and changing the execution line for the `run_ci` one.Available environment variables are:* `CONAN_USERNAME`* `CONAN_CHANNEL`* `CONAN_REMOTES`: comma separated list of additional remotes to look for dependencies* `CONAN_OPTIONS`: comma separated list of options, `run_ci` will explode all itscombinations and perform those builds.* `CONAN_BUILD_PACKAGES`: comma separated list of dependencies to build from source.* For compilers (only meaningful combinations build be generated):- `CONAN_ARCHS`: architectures to build for, comma separated, e.g.: `"x86,x86_64"`- `CONAN_BUILD_TYPES`: comma separated, e.g.: `"Release,Debug"`- [gcc](conan_sword_and_sorcery/ci/compilers/gcc.py):+ `CONAN_GCC_VERSIONS`: comma separated, e.g.: `"4.9,5,7"`- [Visual Studio](conan_sword_and_sorcery/ci/compilers/visual_studio.py):+ `CONAN_VISUAL_VERSIONS`: comma separated, e.g.: `"12,14"`+ `CONAN_VISUAL_RUNTIMES`: comma separated, e.g.: `"MT, MD"`- [clang](conan_sword_and_sorcery/ci/compilers/clang.py):+ `CONAN_CLANG_VERSIONS`: comma separated, e.g.: `"4.0,5.0"`+ `CONAN_CLANG_LIBCXXS`: comma separated, e.g.: `"libc++,libstdc++,libstdc++11"`- [apple-clang](conan_sword_and_sorcery/ci/compilers/clang.py):+ `CONAN_APPLE_CLANG_VERSIONS`: comma separated, e.g.: `"8.1,9.0"`+ `CONAN_APPLE_CLANG_LIBCXXS`: comma separated, e.g.: `"libc++,libstdc++"`- [mingw](conan_sword_and_sorcery/ci/compilers/mingw.py): conan_sword_and_sorcery uses the same approachto define which builds to generate for mingw as it does for the others compilers (conan-package-tools usesa single env variable `MINGW_CONFIGURATIONS`)+ `CONAN_MINGW_VERSIONS`: comma separated, e.g.: `"4.9,5,7"`+ `CONAN_MINGW_EXCEPTIONS`: comma separated, e.g.: `"seh"`+ `CONAN_MINGW_THREADS`: comma separated, e.g.: `"posix,win32"`* Specific to Travis CI:- Travis CI supports dockerized builds, so it will look for `CONAN_DOCKER_IMAGE`env variable and run compilations inside it. If no docker image is specified, butit is set `CONAN_USE_DOCKER=True` then the corresponding image to the compiler willbe used from @lasote available ones (see [list here](https://github.com/conan-io/conan-docker-tools)).### Upload packagesAfter a successful `run_ci` execution it will try to upload the generated packages ifsome conditions are satisfied:* `CONAN_UPLOAD_ONLY_WHEN_STABLE`: will try to upload only if the channel is stable* `CONAN_STABLE_BRANCH_PATTERN` (regex): determine if the repository branch is stable,by default it is true for any given branch that follows a pattern like `stable/v1.2.3`,`stable/1.2rc2.dev32`,... (see [more patterns in unittests](./tests/test_ci/test_runners/test_StableBranchPattern.py)).* `CONAN_LOGIN_USERNAME` (defaults to `CONAN_USERNAME`).* `CONAN_UPLOAD`: URL of the repository to upload packages to (it also will be used asa remote for dependencies).* `CONAN_PASSWORD`: password to authenticate in the repository