Short term: Using dynamic configuration - CircleCI is indeed your best option here. To avoid a really long config.yml, you’d write a script to generate dynamically the “continuation config” that has logic specific to each project.
Medium term: @Benny and team are working on a solution where you’ll be able to create a custom expression where you define a regex for specific directories that had files that changed. and then you can have a YML config file that runs for that particular “trigger”. You can create multiple triggers / YML config file combinations in your project. Attaching an image that shows an example (you can see the “trigger rules” at the top that say "build only when files in ‘/src’ are changed’). You’d use something like that. Let us know if you think that would be an easier approach for your use case
workflows:
setup-workflow:
jobs:
- path-filtering/filter:
base-revision: master
config-path: .circleci/no-updates.yml
mapping: | # The mapping will be used to generate the dynamic configuration for all conditions that match.
.* always-continue true .circleci/shared.yml
RustStore/.* build-store true .circleci/rust-store.yml
RustErp/.* build-erp true .circleci/rust-erp.yml
filters:
tags:
only: /.*/