cicd Roadmap

CI/CD 流水线排障专题

CI/CD 流水线排障专题:聚合 GitHub Actions、GitLab CI 和 Jenkins 的 Runner 离线与标签不匹配、缓存失效、构建 OOM、Docker 镜像拉取失败、secrets 未注入和 CI 本地不一致等常见问题的排障路径。

CI/CD 排障先区分是 YAML 配置错误、Runner 基础设施还是执行环境差异,再决定改流水线还是查 Runner;job 长时间 pending 通常是 Runner 离线或标签不匹配,而不是脚本本身写错。

cicdgithub-actionsgitlab-cijenkinsrunnercache
排障 / 命令7
精选入口4
工具 / 速查1
最近更新2026-07-04

Troubleshooting Path

推荐排障路线图

提交问题 →
  1. 01

    先确认流水线状态和失败位置

    看 job 是 pending、失败还是卡住,定位到具体步骤和报错,而不是反复重试。

  2. 02

    再查 Runner 在线与标签匹配

    job 一直 pending 通常是 Runner 离线、标签不匹配或并发额度不足,而不是语法错误。

  3. 03

    继续对比本地与 CI 环境差异

    复现失败时对比 Docker socket、网络、secrets 注入和缓存路径,区分配置和环境问题。

  4. 04

    最后校验缓存和密钥配置

    确认缓存 key 用 lockfile hash、secrets 作用域正确,日志里不要打印敏感信息。

Before You Change

执行前检查

  • 排查前保留失败 job 的完整日志和触发上下文
  • 调缓存 key 前确认路径覆盖真实依赖目录
  • 调试时不要在日志中打印 secrets 或 token
  • 本地复现用 act 或 gitlab-runner exec,避免直接在生产流水线试错

Start Here

优先阅读

Latest Updates

最近更新

All Runbooks

全部相关内容

排障

CI 缓存失效排查方法

CI 缓存不命中、每次构建都从零安装依赖时,先对比 restore/save 步骤打印的 cache key 是否变化,再检查缓存路径配置、runner OS 前缀和 gh cache list 中的实际条目,常见根因是 key 把易变内容算入或 restore-keys 顺序不对。

ci缓存cache
排障

CI 中 Docker 构建失败排查方法

CI 流水线 docker build 报错、层缓存失效或 permission denied 时,用 --progress=plain --no-cache 输出完整构建日志,检查 docker.sock 权限、buildx builder 和 Dockerfile 指令顺序,常见根因是 socket 无权限、上下文频繁变化或缓存未持久化。

cidocker-buildbuildx
排障

GitHub Actions Runner 离线排查方法

GitHub Actions 自托管 Runner 显示 offline、job 一直 waiting for runner 时,用 systemctl status actions.runner.* 确认服务状态,查看 ~/actions-runner/_diag 日志中的连接错误,排查 registration token 过期和到 github.com 的网络代理与证书。

github-actionsrunnerself-hosted
排障

GitLab CI 流水线失败排查方法

GitLab CI 流水线失败、job 报错或 pending 不执行时,用 gitlab-runner verify 测试 Runner 与 GitLab 连接,检查 Runner tags 是否匹配 job、executor 类型(shell/docker/kubernetes)配置和 registration token,再用 journalctl 看 gitlab-runner 服务日志定位脚本或镜像问题。

gitlab-cipipelinerunner
排障

Jenkins 构建卡住排查方法

Jenkins 构建卡在队列不动或执行中挂起时,用 queue/api/json 查看队列 why 阻塞原因,computer/api/json 检查 executor 是否 offline,卡死用 jstack 抓 Jenkins 主线程转储,多数是节点掉线、标签不匹配或 Quiet Period 延迟。

jenkins构建卡住队列
排障

Redis 内存占用过高与淘汰策略排查

Redis 内存持续上涨、报 OOM command not allowed when used memory > 'maxmemory' 或 evicted_keys 飙升时,先用 INFO memory 看 used_memory/maxmemory,CONFIG GET maxmemory-policy 确认策略是否 noeviction,再用 --bigkeys 找大 key 并检查 TTL 是否缺失。

redismemorybigkeys
命令

CI/CD 常用排障命令

CI/CD 排障常用命令合集,Jenkins 用 jenkins-cli 与 queue/computer API 查队列和 executor,GitLab 用 gitlab-runner verify/list 检查 Runner,GitHub Actions 用 gh run list、gh run view --log-failed、gh cache 定位失败步骤和缓存。

cicdjenkinsgitlab-ci