gitlab-ci
Skill15 starsChanged 41 days agoMITView on GitHub
Expert GitLab CI/CD assistance covering .gitlab-ci.yml, stages, artifacts, caching, GitLab Runners, and Auto DevOps. Use when configuring continuous integration and deployment pipelines on GitLab.
5 other projects use a version of this.
Adopted by
Most recently taken up by
- infiniumtek/code-review-agenttheir own version, first seen Oct 25, 2026
- nordz0r/skillstheir own version, first seen Oct 15, 2026
- DongDuong2001/pudo-code-systemtheir own version, first seen Oct 13, 2026
- addxai/enterprise-harness-engineeringtheir own version, first seen Apr 17, 2026
- jcsaaddupuy/badrobotstheir own version, first seen Feb 26, 2026
Other versions5 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 5
- addxai/enterprise-harness-engineering★ 44same name
- nordz0r/skills★ 8same name
- DongDuong2001/pudo-code-system★ 5same name
- infiniumtek/code-review-agent★ 4same name
- jcsaaddupuy/badrobots★ 1same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository350 other files it gives its agents.
- airflowSkill
- catboostSkill
- claudeSkill
- comfyuiSkill
- cursor-aiSkill
- dalleSkill
- daskSkill
- dbtSkill
- deepseekSkill
- fastaiSkill
- geminiSkill
- github-copilotSkill
- huggingfaceSkill
- jaxSkill
- jupyterSkill
- kerasSkill
- langchainSkill
- lightgbmSkill
- llamaindexSkill
- llamaSkill
- matplotlibSkill
- midjourneySkill
- mistralSkill
- mlflowSkill
- nltkSkill
- numpySkill
- ollamaSkill
- openai-gptSkill
- opencvSkill
- pandasSkill
- perplexitySkill
- plotlySkill
- polarsSkill
- pytorchSkill
- raySkill
- scikit-learnSkill
- seabornSkill
- spacySkill
- sparkSkill
- stable-diffusionSkill
- tensorflowSkill
- vaexSkill
- weights-biasesSkill
- whisperSkill
- xgboostSkill
- api-gatewaySkill
- clean-architectureSkill
- cqrsSkill
- domain-driven-designSkill
- event-drivenSkill
- event-sourcingSkill
- graphqlSkill
- grpcSkill
- hexagonalSkill
- microservicesSkill
- modular-monolithSkill
- monolithSkill
- rest-apiSkill
- sagaSkill
- serverlessSkill
- The first 60 shown.
The file
We split this skill into the rules it gives an agent
5 rules. 0 are common, 1 is distinctive, and 4 are very specific to this project.
0
Common
Most of the 4 edited versions we read keep these.
1
Distinctive
This author's own choices. Worth a look.
4
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 153
Use .gitlab-ci.yml stages with rules: conditions:
- Very specific: line 185
Use rules:changes in monorepos to avoid running redundant jobs when unrelated code is modified.
- Distinctive: line 187
Use GitLab Dependency Proxy to cache container images from Docker Hub, eliminating rate limit throttling.
- Very specific: line 192
Use deprecated only/except syntax.
- Very specific: line 194
Run Docker-in-Docker (dind) with privileged flags in shared environments.
“Common” is measured: kept by at least 6 in 10 of the 4 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
GitLab CI/CD
GitLab CI/CD provides integrated pipeline orchestration directly within GitLab repositories, utilizing reusable CI Components and container-native runners for automated software delivery.
When to Use
- Self-Hosted & Enterprise GitOps CI/CD: Running pipelines within GitLab EE/CE and private runner infrastructures.
- Container Registry & Helm Package Integration: Built-in GitLab Container Registry, Package Registry, and Dependency Proxy.
- Multi-Project & Downstream Pipelines: Triggering coordinated cross-repository builds in complex enterprise architectures.
- Dynamic Parent-Child Pipelines: Generating build steps dynamically at runtime based on modified monorepo paths.
Quick Start
# .gitlab-ci.yml
stages:
- build
- test
build-job:
stage: build
image: node:20
script:
- npm ci
- npm run build
artifacts:
paths:
- dist/
test-job:
stage: test
image: node:20
script:
- npm test
needs: [build-job]Core Concepts
Declarative Pipeline with Stages, Caching & Artifacts
Clean, structured .gitlab-ci.yml pipeline:
# .gitlab-ci.yml
stages:
- lint
- test
- build
- deploy
default:
image: node:22-alpine
cache:
key:
files:
- package-lock.json
paths:
- .npm/
variables:
npm_config_cache: "$CI_PROJECT_DIR/.npm"
lint:
stage: lint
script:
- npm ci
- npm run lint
rules:
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
test:
stage: test
script:
- npm ci
- npm test -- --ci --reporters=default --reporters=jest-junit
artifacts:
when: always
reports:
junit: junit.xml
coverage_report:
coverage_format: cobertura
path: coverage/cobertura-coverage.xml
build-container:
stage: build
image: docker:27-cli
services:
- docker:27-dind
variables:
DOCKER_TLS_CERTDIR: "/certs"
IMAGE_TAG: $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA
script:
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
- docker build -t $IMAGE_TAG .
- docker push $IMAGE_TAG
rules:
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCHMonorepo Path Filtering with rules:changes
Executing jobs only when relevant subdirectories are modified:
frontend-job:
stage: test
script:
- cd frontend && npm test
rules:
- changes:
- frontend/**/*
backend-job:
stage: test
script:
- cd backend && cargo test
rules:
- changes:
- backend/**/*Protected Environments & Manual Deployment Gates
Requiring manual approval for production releases:
deploy-production:
stage: deploy
environment:
name: production
url: https://api.example.com
script:
- echo "Deploying version $CI_COMMIT_SHA to production cluster"
rules:
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
when: manual # Requires manual trigger in GitLab UICommon Patterns
Multi-Stage Pipeline with Artifact Passing and Rule Conditions
Problem: Running tests and security scans on draft branches before code is ready for deployment.
Solution:
Use .gitlab-ci.yml stages with rules: conditions:
stages:
- test
- deploy
run_tests:
stage: test
image: node:20-alpine
script:
- npm ci
- npm test
artifacts:
when: on_failure
paths:
- test-results/
deploy_prod:
stage: deploy
image: alpine/k8s:1.28.2
script:
- kubectl apply -f k8s/production/
rules:
- if: '$CI_COMMIT_BRANCH == "main"'
when: manualBest Practices
Do:
- Use
rules:changesin monorepos to avoid running redundant jobs when unrelated code is modified. - Configure GitLab
reports:junitandreports:coverage_reportto view test insights in merge requests. - Use GitLab Dependency Proxy to cache container images from Docker Hub, eliminating rate limit throttling.
- Mark production deploy jobs with
when: manualand assign them to protected environments with approver policies.
Don't:
- Use deprecated
only/exceptsyntax; migrate to modernrules:directives. - Store plaintext passwords in
.gitlab-ci.yml; use Masked and Protected CI/CD Variables. - Run Docker-in-Docker (
dind) with privileged flags in shared environments; use Kaniko for rootless builds.
Troubleshooting
| Error | Cause | Solution |
yaml invalid: jobs:run_tests config key may not be used with | Incompatible keyword combinations (e.g. only used with rules). | Migrate legacy only/except syntax to modern rules: conditions. |
Job failed: execution took longer than ... | Job exceeded runner timeout setting. | Increase timeout in project Settings > CI/CD > General pipelines. |
Artifacts not found in downstream job | Artifact expiration reached or dependencies: list omitted. | Explicitly declare dependencies: [build_job] in the consumer job. |
References
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

