This is a feature request for CircleCI to add support for multiple YAML files instead of just the one circle.yml file we have today. There are two reasons for this request:
Better cross-platform support. For example, mobile developers need to test and deploy their iOS apps on OS X hosts, and usually want to use Linux to do the same for their Android apps. Currently CircleCI doesn’t let us run some tests on OS X and some on Linux; it’s all-or-nothing and developers are forced to split their repos, use two CI providers, or run all tests on OS X and spend a lot of money.
Some previous requests for this feature: Support for Multiple OSs, How to use circleci for linux, xcode, ... in one project?.
Easier test matrix configuration. The way CircleCI does parallelism with $CIRCLE_NODE_INDEX is kind of awkward sometimes. Sometimes I’d rather write a bunch of separate circle.yml files – one for each test configuration – and have CircleCI run each in a separate container. Some previous requests for this feature: Build matrix, Build matrix configuration for iOS projects.
CircleCI would support a new directory called “circle.d”, which contains any number of YAML files that can be named anything, like “android-tests.yml”, “ios-tests.yml”, and “testflight-deploy.yml”. Each of these files would be treated almost the same way that “circle.yml” is treated today.
Parallelism: by default, CircleCI would set up one container for each YAML file. Some YAML files may want extra parallelism, so CircleCI would need to build a way for each YAML file to specify how many containers it wants. This is a nice-to-have, though; for v1 it’d be fine to have one container per YAML file since you could easily make more YAML files for more parallelism.
If CircleCI were to build this, I’d be interested in moving all of the React Native project’s tests to CircleCI. Currently they’re split between CircleCI and Travis CI. I’d also move more of my own company’s tests and deployment scripts to CircleCI if it were easier to set up separate test containers for our Android and iOS apps.
Thanks for listening!