CI/CD Introduced in L7

GitLab CI

GitLab's built-in CI/CD. .gitlab-ci.yml in the repo root. The native choice if you're on GitLab.

Mindmap

hover · click to navigate
this tech depends on / used by alternative Shipyard anchor
What it is

The plain-English version

GitLab CI is GitLab's pipeline runner, configured by a .gitlab-ci.yml file at the repo root. Self-hosted GitLab or gitlab.com both work. Pipeline runs on GitLab-managed runners or self-hosted runners. Tight integration with GitLab's merge requests, environments, and registry.

Why it exists

The problem it solves

If your repo is on GitLab, GitLab CI is the path of least friction. The DSL is YAML like Actions but with GitLab-specific concepts (stages, environments, includes). Strong story for self-hosting (a lot of regulated industries use self-hosted GitLab end-to-end).

What it competes with

Alternatives

AlternativeTypeWhen it wins
GitHub ActionsCI/CDGitHub's built-in CI/CD. YAML in your repo. Free for public, generous for private. The default for anything on GitHub.
JenkinsCI/CDThe CI/CD elder. Self-hosted, plugin-driven, dominant in enterprise. The Groovy Jenkinsfile is a rite of passage.
Where it shows up in Shipyard

Deep links

Vocabulary

The words you'll hear

Stage
A phase of the pipeline (build, test, deploy). Jobs in the same stage run in parallel.
Job
A unit of work.
Runner
A machine that picks up and executes jobs. Shared (GitLab.com) or self-hosted.
Environment
A named target (staging, production). Tracks deployments per branch.
Include
Pull config from another file or repo. Reusable templates.
Cache / Artifacts
Cache reuses content across jobs/runs; artifacts publish output.
Prompting

Bad vs. good prompt for GitLab CI

✕ Bad prompt
set up gitlab ci
✓ Good prompt
Write a .gitlab-ci.yml for a Node.js TypeScript app with three stages (test, build, deploy). Cache node_modules using lockfile hash. The deploy job runs only on main, deploys to environment 'production', and uses a manual trigger. Use the official node:20 Docker image.

Why it works: Specifies the stage layout, caching pattern, deployment gating, and image. Maps cleanly to GitLab idioms (stages, environments, manual triggers).

Pitfalls

What bites real teams

⚠ Self-hosted runner skew

Self-hosted runners drift from .gitlab-ci.yml expectations (different OS, missing tools). Pin to specific images where possible.

⚠ Pipeline minutes on free tier

GitLab.com free tier minutes are tighter than GitHub's. For heavy projects, self-host runners or pay.

⚠ Confusing 'stages' definition

A job's stage: tells when it runs; the top-level stages: defines the order. Both are needed; both confuse first-timers.

References

Official docs only