WindowsmacOSLinux

Where Does GitLab CI Store Pipeline Config?

GitLab CI pipelines live in .gitlab-ci.yml at the repo root, movable to custom paths or external files via settings.

Last updated

GitLab CI starts with .gitlab-ci.yml: stages, jobs, scripts, variables, rules. Runners clone the project and execute whatever that file describes, so the file is the pipeline.

Shared logic arrives through include (local files, other projects, components, remote URLs). The fully expanded view in the pipeline editor is the antidote to include spaghetti: it shows the merged result GitLab actually runs.

Where GitLab CI stores this, by platform

Windows
[RepoDir]\.gitlab-ci.yml

Stages, jobs, variables, rules. Validate in the pipeline editor before pushing; it checks schema plus basic logic. gitlab-ci-local runs the same file locally.

macOS
[RepoDir]/.gitlab-ci.yml

Same file. CI/CD variables layer over file values (project, group, instance levels), so secrets stay out of the yaml.

Linux
[RepoDir]/.gitlab-ci.yml

Same layout. Custom paths must end .yml for external URLs; cross-project paths need the file on the other project's default branch.

Frequently asked questions

Can the CI file live outside the repo root?

Set Settings, CI/CD, General pipelines to the new path (relative, cross-project with @, or full URL). The pipeline editor cannot edit remote files, so keep an editor handy for those.

My pipeline behaves oddly with includes. How do I see the real config?

Use the pipeline editor's visualize and full configuration tabs. They expand includes and references into one view, which exposes the actual job graph behind the YAML.

Notice an outdated path? Let us know.