Przejdź do treści
Biblioteka skilli
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.

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

  1. 技术栈强制约束
  2. 命名规范
  3. 流水线结构与 Job 规范
  4. 缓存与产物规范
  5. 变量与安全规范
  6. Docker 构建规范
  7. 注释规范
  8. 代码质量强制要求
  9. 运维规范
  10. 最佳实践
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

RepozytoriumWynikLicencja
Ta strona · dkbnull/hello-skill90MIT
G1Joshi/Agent-Skills100MIT
siva01c/claude-plugins100MIT

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.

Uwagi i zgłoszenia

Wiadomość trafi do Bartosza Sokolińskiego. Adres e-mail jest potrzebny tylko do odpowiedzi. Szczegóły w polityce prywatności.