Noting that there are a number of earlier threads asking related questions, but none asking directly.
For a repository with multiple discrete projects, or a repository with a single project but a discrete series of roles, it does not feel like Gitlab really understands this. I’m aware of parent-child architecture, it’s a bad way to solve for this.
Let’s start with one extreme, let’s imagine a mono-repos scenario like Facebook’s, there is little to no commonality between the majority of projects. Trying to construct parent-child relationships or use yml-artifact construction to manage that … yeah, nah.
At the opposite extreme would be a game development company with proprietary engine/tooling/systems/platform in some combination.
Their repos are likely to be partitioned, to some degree, but the tooling - for instance - will have a very different outline when viewed from a client developer perspective as opposed to a production pipelining perspective. Different OSes, different build/testing strategies, different deployment, etc, etc.
Is there a non-legacy reason why “single yaml file in the root directory” is gitlab’s only option? Are there any plans to provide support for having discrete pipeline files directly supported by gitlab?
- having a “.gitlab-ci.yml” at some sub-directory other than root should automatically narrow the scope of when the pipeline is triggered,
- a way to specify additional paths to trigger this yml,
- allow “.gitlab-ci.yml” to be a folder to split into multiple yaml files, or allow “.gitlab-ci/”,
- stop descending the filesystem on finding a “.gitlab-ci.yml” unless it has markup indicating it’s not final, so
/Internal | .gitlab-ci.yml <-- processed "image: ubuntu" | Projects | | OverEager | | | .gitlab-ci.yml <-- ignored unless /Internal/.gitlab-ci.yml is flagged for passthru /External | .gitlab-ci.yml <-- processed "image: posix" "passthru: true" | MacOS/ | | MacApp/ | | | .gitlab-ci.yml <-- processed, because passthru | Linux/ ... | Windows/ | | WinApp/ | | | .gitlab-ci.yml <-- processed because passthru "image: windows" | | | src/ | | | | .gitlab-ci.yml <-- not processed, because WinApp/yml didn't flag passthru