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