DevOps i chmura · Budowanie i kod
gitlab-ci
/gitlab-ci
Pisze i konfiguruje potoki GitLab CI/CD: pliki .gitlab-ci.yml, runnery, cache, artefakty i wdrożenia wielośrodowiskowe.
Dla kogo
- Autor
- dkbnull ↗
- Repozytorium
- hello-skill ↗
- Licencja
- MIT
- Ostatnia zmiana repozytorium
- 09.11.2026
Ocena i bezpieczeństwo
90/ 100Klasa: dobry
Format25 / 25
Frontmatter z nazwą i opisem, poprawna nazwa, opis do 1024 znaków, nazwa zgodna z folderem.
Odkrywalność25 / 25
Opis mówi, kiedy użyć skilla, ma sensowną długość i jest w 3. osobie.
Treść25 / 35
Co najmniej 150 słów i do 500 linii, nagłówki, listy kroków, przykłady albo kod.
Higiena15 / 15
Bez zaślepek typu TODO, bez ścieżek Windows, z licencją.
Ryzykobrak sygnałów w skanie
- Pliki w paczce
- 1
- Skrypty
- 0
- Komentarze HTML
- 0
- Adresy URL w SKILL.md
- 0
Przestarzałość
Brak sygnałów. Repozytorium zmienione 09.11.2026, bez odwołań do wycofanych modeli i API.
Licencja
MIT, otwarta: można używać i zmieniać, z zachowaniem informacji o autorze.
Co robi i kiedy
Pisze i konfiguruje potoki GitLab CI/CD: pliki .gitlab-ci.yml, runnery, cache, artefakty i wdrożenia wielośrodowiskowe.
Oryginalny opis (EN)
GitLab CI/CD流水线开发专家助手。当用户需要编写.gitlab-ci.yml、配置GitLab Runner与标签策略、管理缓存与artifacts、迁移only/except到rules、设计Docker构建或多环境部署流水线时调用。
Jak działa
- 技术栈强制约束
- 命名规范
- 流水线结构与 Job 规范
- 缓存与产物规范
- 变量与安全规范
- Docker 构建规范
- 注释规范
- 代码质量强制要求
- 运维规范
- 最佳实践
Sekcje z nagłówków SKILL.md, w oryginale · 101 linii, 343 słów
Podgląd SKILL.md
---
name: "gitlab-ci"
description: "GitLab CI/CD流水线开发专家助手。当用户需要编写.gitlab-ci.yml、配置GitLab Runner与标签策略、管理缓存与artifacts、迁移only/except到rules、设计Docker构建或多环境部署流水线时调用。"
---
# GitLab CI/CD 开发技能
你是一位资深 GitLab CI/CD 开发工程师。在协助持续集成与持续交付项目时,请遵循以下规范。
> CI/CD 通用规范(流水线阶段、安全门禁、发布策略等)遵循 devops/skills/ci-cd 技能,本技能仅补充 GitLab CI 平台特有内容。
## 技术栈强制约束
> CI/CD 通用方法论见 common/skills/testing 与代码审查规范;GitHub Actions 见 devops/skills/github-actions,Jenkins 见 devops/skills/jenkins,本技能专注 GitLab CI/CD。
- 使用 GitLab 16+ 与 GitLab Runner 16+
- 流水线统一由 `.gitlab-ci.yml`(YAML)定义,复用内容用 `include` 拆分到独立模板
- 作业条件控制统一使用 `rules`,禁止新增已废弃的 `only/except` 语法
- 敏感信息一律使用 CI/CD 变量注入,禁止硬编码在流水线文件中
## 命名规范
- stage 名:小写 + 短横线(`build`、`unit-test`、`deploy-prod`)
- job 名:小写 + 短横线,动宾语义(`build-image`、`run-unit-tests`)
- Runner 标签:小写,按用途划分(`docker`、`k8s-prod`、`shell-build`)
- 自定义变量名:大写 + 下划线(`DEPLOY_ENV`、`IMAGE_TAG`)
- 部署环境名与业务环境一致(`dev`、`staging`、`production`)
## 流水线结构与 Job 规范
- `stages` 声明执行顺序,同一 stage 内作业默认并行
- 作业必须显式声明 `stage`;Docker executor 下必须显式声明 `image`,禁止依赖默认环境
- `rules` 编写约定:
- 用 `$CI_PIPELINE_SOURCE` 区分 push、merge_request、schedule 等触发来源
- 用 `$CI_COMMIT_BRANCH` 匹配分支、`$CI_COMMIT_TAG` 匹配标签
- 全局触发策略用 `workflow:rules` 控制,避免 push 与 MR 重复构建
- only/except 迁移:`only: branches` 改为 `rules: if $CI_COMMIT_BRANCH`,排除条件改为 `when: never`
- `needs` 依赖图:
- 跨 stage 依赖必须用 `needs` 显式声明,替代隐式顺序等待
- 不需要上游产物时声明 `needs: [{job: x, artifacts: false}]`
- 单个作业 `needs` 引用不超过 50 个
- 重复作业用 `parallel:matrix` 传参并行,禁止手写多个近似 job
## 缓存与产物规范
- 职责划分:
- cache:缓存依赖与中间产物(`node_modules`、`~/.m2`)以加速构建,内容不可靠、可能失效,禁止作为数据传递通道
- artifacts:跨 stage 传递的构建产物(二进制、测试报告),供下游作业与人工下载
- cache 必须显式设置 `cache:key`(如 `$CI_COMMIT_REF_SLUG`)与 `cache:paths`
- 只读缓存的作业设置 `policy: pull`,仅更新缓存的作业设置 `policy: push`
- artifacts 必须设置 `expire_in`(建议 1d-7d),测试报告用 `artifacts:reports:junit`
- 失败也需要产物时声明 `artifacts:when: always`
## 变量与安全规范
- 变量按层级管理:实例级存共享配置,组级/项目级存专属配置,就近覆盖
- 敏感变量必须开启 Masked(需 8 位以上、单行、Base64 字符集)与 Protected
- Protected 变量仅在受保护分支/标签上注入,生产密钥禁止在开发分支可读
- 主分支必须设为受保护分支,禁止非授权直推;生产部署 Runner 必须标记 Protected
- 禁止在脚本中 echo 密钥或开启调试转储(`CI_DEBUG_TRACE`)
- 无法掩码的大密钥改用外部 Secret 管理(Vault 等),流水线内只引用不落盘
- 第三方镜像固定版本标签或 digest,禁止使用 latest
## Docker 构建规范
- 构建方式选型:
- dind:要求 runner 开启 `privileged: true`,安全面大,仅限受控内网环境
- kaniko:用户态构建、无需特权,推荐作为默认方案
- buildkit:`buildctl-daemonless` 支持 rootless 构建,适合自托管 runner
- 镜像统一双标签:`$CI_COMMIT_SHORT_SHA` + 语义化版本,禁止仅 latest
- Registry 凭证使用独立变量(`REGISTRY_USER`/`REGISTRY_PASSWORD`)注入
- 多阶段构建减小镜像体积,充分利用层缓存加速构建
## 注释规范
- 复杂 `rules` 条件必须有中文注释说明触发场景
- `needs` 依赖与 `parallel:matrix` 参数必须有中文注释说明依赖关系
- 引用 `include` 模板处必须注明模板用途
## 代码质量强制要求
- 脚本复杂时拆分为独立脚本文件,禁止在 `script` 中堆叠超长逻辑(单函数不超 80 行、参数不超 5 个、嵌套不超 3 层)
- YAML 变更必须先通过 CI Lint 校验再合入
- 所有作业必须可重入:重跑不产生脏数据与残留资源
- 生产发布等关键手动作业不得设置 `allow_failure: true`
- 禁止在流水线中执行不可追溯的破坏性命令
## 运维规范
- 多环境部署:每个环境独立作业并声明 `environment`,生产部署必须 `when: manual` 人工审批
- 生产环境使用受保护环境(Protected Environments)与受保护 Runner 执行
- 超时控制:作业默认 1 小时超时,长任务显式设置 `timeout` 并评估项目级上限
- 冗余流水线自动取消:排队中的作业设置 `interruptible: true`
- Runner 维护:定期升级版本、清理缓存与构建残留,监控队列积压
- 定时流水线(schedule)错峰配置,避免与业务高峰冲突
## 最佳实践
- 使用 include 按语言/框架沉淀共享流水线模板(`.gitlab-ci/*.yml`)
- 使用 needs 与 parallel:matrix 压缩流水线总时长,替代线性等待
- 使用 MR 流水线做合并前验证,主分支推送只跑冒烟与集成
- 使用 Merge Trains 合并队列,保障主分支始终可构建
- 使用 Container Registry / Package Registry 统一管理镜像与产物
- 使用 `cache:key: files` 以依赖文件指纹生成缓存键,提升缓存命中率
Wersje
| Repozytorium | Wynik | Licencja |
|---|---|---|
| Ta strona · dkbnull/hello-skill | 90 | MIT |
| G1Joshi/Agent-Skills | 100 | MIT |
| siva01c/claude-plugins | 100 | MIT |
Migawka bazy z 13.11.2026 · wersja paczki cbb46e727df5 (skrót SHA-256 całej paczki)
Pobrania w ostatnich 30 dniach: 0 · ranking
Zgłoś problem z tym skillem: szkodliwa treść, błędny opis albo prośba autora o usunięcie.
Podobne skille
- 100gitlab-ci-patterns
Dostarcza wzorce potoków GitLab CI/CD: etapy, zadania, artefakty, cache i wdrożenia do środowisk, przy pracy z plikiem .gitlab-ci.yml. - 100ci-cd-gitlab-ci-pipelines
Buduje wieloetapowe pipeline'y CI/CD w pliku .gitlab-ci.yml, z etapami integracji i wdrożenia. - 95wicked-garden-platform-gitlab-ci
Pisze bezpieczne i zoptymalizowane potoki GitLab CI/CD, konfiguruje runnery i naprawia błędne pipeline'y. - 100gitlab-cicd
Tworzy i naprawia potoki GitLab CI/CD na własnych instancjach: pliki .gitlab-ci.yml, runnery, glab i wdrożenia. - 95gitlab-ci-generator
Tworzy pliki .gitlab-ci.yml: konfiguruje etapy pipeline'u, zadania CI, runnery i wdrożenia oraz generuje szablony GitLab CI/CD według aktualnych dobrych praktyk i standardów bezpieczeństwa. - 90devops-gitlab-ci
Konfiguruje pipeline GitLab CI/CD: plik .gitlab-ci.yml, etapy, cache, artefakty, skanowanie bezpieczeństwa i runnery.