cicd Command

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 定位失败步骤和缓存。

Jenkins 用 jenkins-cli 和队列 API,GitLab 用 gitlab-runner verify,GitHub Actions 用 gh run 和 gh cache,Docker 构建用 buildx --progress=plain 看完整日志。

适用环境Jenkins / GitLab CI / GitHub Actions
风险等级
最后验证2026-07-04
建议权限普通用户 + sudo

Scenario

什么时候用这组命令

这组命令适合在处理“CI/CD 常用排障命令”时作为第一轮检查模板。使用时先替换占位符,再在目标机器或目标 namespace 中执行,避免在错误环境里得到误导结论。

Input

你需要先准备什么

  • 先确认是流水线配置问题,还是 Runner / 执行环境问题,避免在 YAML 和基础设施之间来回横跳。
  • 保留失败 job 的完整日志、触发上下文、分支和 commit,而不是只看最后几行报错。
  • 区分本地能复现但 CI 不行的问题,重点对比环境、密钥、缓存和网络差异。

Risk Notes

执行风险

  • 不要在日志里打印 secrets 或 token,CI 日志常被长期留存,泄露后难以追溯。
  • 不要用 latest tag 做缓存 key,会导致产物不可复现甚至复用错误缓存。
  • 不要在流水线中执行不安全的 shell 命令或从不可信源下载脚本。

Commands

命令详解

命令 1: 执行 java

用于补充“CI/CD 常用排障命令”的排查证据链。java 的输出需要结合上下文其他命令交叉验证,不要单独依赖某一条结果下结论。

  • 确认命令运行位置正确。
  • 保留关键输出,方便和修复后对比。
命令 1: 执行 java
java -jar jenkins-cli.jar -s http://localhost:8080/ -auth user:token list-jobs

命令 2: 发起 HTTP/网络探测

用于从指定位置模拟真实请求。加 -v 可以看到 DNS、TCP、TLS、HTTP 头和代理连接过程,是定位链路阶段的关键证据。

  • 确认命令运行位置正确。
  • 保留关键输出,方便和修复后对比。
命令 2: 发起 HTTP/网络探测
curl -s http://localhost:8080/queue/api/json

命令 3: 发起 HTTP/网络探测

用于从指定位置模拟真实请求。加 -v 可以看到 DNS、TCP、TLS、HTTP 头和代理连接过程,是定位链路阶段的关键证据。

  • 确认命令运行位置正确。
  • 保留关键输出,方便和修复后对比。
命令 3: 发起 HTTP/网络探测
curl -s http://localhost:8080/computer/api/json

命令 4: 执行 sudo

用于确认 Git/SSH 的最终配置和认证链路。注意输出中可能包含仓库地址、用户名或代理信息,分享前应脱敏。

  • 确认命令运行位置正确。
  • 保留关键输出,方便和修复后对比。
  • 如果输出为空或权限不足,切换到有权限用户后再判断。
命令 4: 执行 sudo
sudo gitlab-runner verify

命令 5: 执行 sudo

用于确认 Git/SSH 的最终配置和认证链路。注意输出中可能包含仓库地址、用户名或代理信息,分享前应脱敏。

  • 确认命令运行位置正确。
  • 保留关键输出,方便和修复后对比。
  • 如果输出为空或权限不足,切换到有权限用户后再判断。
命令 5: 执行 sudo
sudo gitlab-runner list

命令 6: 执行 gh

用于补充“CI/CD 常用排障命令”的排查证据链。gh 的输出需要结合上下文其他命令交叉验证,不要单独依赖某一条结果下结论。

  • 确认命令运行位置正确。
  • 保留关键输出,方便和修复后对比。
命令 6: 执行 gh
gh run list -R owner/repo --limit 20

命令 7: 执行 gh

用于补充“CI/CD 常用排障命令”的排查证据链。gh 的输出需要结合上下文其他命令交叉验证,不要单独依赖某一条结果下结论。

  • 先替换尖括号占位符,不要原样执行。
  • 确认命令运行位置正确。
  • 保留关键输出,方便和修复后对比。
命令 7: 执行 gh
gh run view <run-id> --log-failed

命令 8: 执行 gh

用于补充“CI/CD 常用排障命令”的排查证据链。gh 的输出需要结合上下文其他命令交叉验证,不要单独依赖某一条结果下结论。

  • 确认命令运行位置正确。
  • 保留关键输出,方便和修复后对比。
命令 8: 执行 gh
gh cache list -R owner/repo

命令 9: 检查 Docker 状态

用于补充“CI/CD 常用排障命令”的排查证据链。docker 的输出需要结合上下文其他命令交叉验证,不要单独依赖某一条结果下结论。

  • 确认命令运行位置正确。
  • 保留关键输出,方便和修复后对比。
命令 9: 检查 Docker 状态
docker buildx build --progress=plain .

命令 10: 查看 systemd 日志

用于读取 systemd 或内核在故障时间附近记录的真实错误,比 status 摘要更完整。重点看时间、退出码、权限、路径和依赖失败。

  • 确认命令运行位置正确。
  • 保留关键输出,方便和修复后对比。
  • 如果输出为空或权限不足,切换到有权限用户后再判断。
命令 10: 查看 systemd 日志
sudo journalctl -u gitlab-runner -n 200 --no-pager

Workflow

建议执行顺序

按顺序执行,不要跳过确认类命令

先用只读命令确认状态,再执行会改变状态的命令。Jenkins 用 jenkins-cli 和队列 API,GitLab 用 gitlab-runner verify,GitHub Actions 用 gh run 和 gh cache,Docker 构建用 buildx --progress=plain 看完整日志。

  • Jenkins 排障先用 jenkins-cli list-jobs 和 queue/api/json 看队列积压与 job 状态。
  • 用 computer/api/json 检查 executor 和节点是否 offline,构建卡住时配合 jstack 抓线程。
  • GitLab CI 用 gitlab-runner verify 测试连接,gitlab-runner list 查看已注册 Runner。
  • GitHub Actions 用 gh run list 和 gh run view --log-failed 快速定位失败步骤和日志。
  • Docker 构建用 buildx --progress=plain 输出完整日志,配合 gh cache 管理缓存。
按顺序执行,不要跳过确认类命令
java -jar jenkins-cli.jar -s http://localhost:8080/ -auth user:token list-jobs
curl -s http://localhost:8080/queue/api/json
curl -s http://localhost:8080/computer/api/json

把命令输出变成结论

命令本身不是结论。每次执行后要回答:目标是否存在、状态是否异常、异常是否能解释用户看到的现象。

  • 记录关键字段,而不是整屏复制
  • 把正常路径和异常路径输出对比
  • 输出为空也要解释:是确实没有,还是权限/过滤条件不对
把命令输出变成结论
curl -s http://localhost:8080/queue/api/json
curl -s http://localhost:8080/computer/api/json
sudo gitlab-runner verify

执行前替换占位符并控制影响范围

包含 <service>、<pod>、<namespace>、<pid>、<container> 的命令必须先替换。涉及 reload、restart、KILL、vacuum、prune 的命令要确认影响范围。

  • 优先在测试环境或只读模式验证
  • 生产执行前保留回滚路径
  • 把最终可用命令写入工单或 runbook
执行前替换占位符并控制影响范围
docker buildx build --progress=plain .
sudo journalctl -u gitlab-runner -n 200 --no-pager

Verification

怎么判断命令有效

  • 命令已在正确机器、正确用户、正确 namespace 或正确仓库下执行。
  • 输出能支撑明确判断:正常、异常、权限不足、目标不存在或需要下一跳排查。
  • 对有副作用的命令,已确认执行窗口、影响范围和回滚方式。

Prevention

沉淀到日常流程

  • 把 secrets 和环境变量在流水线里显式声明,避免依赖运行时隐式注入导致不一致。
  • 为关键 job 加超时上限,防止卡死占用 Runner 影响其他流水线执行。
  • 缓存 key 统一用 lockfile hash,不要用 latest tag 或时间变量,确保缓存可复现。
  • 在流水线中增加构建产物验证步骤,如类型检查、lint 和测试,尽早发现质量问题。

常见问题

jenkins-cli 怎么认证?

在 Jenkins 用户配置里生成 API Token,用 -auth 用户名:token 方式传入,或配置 SSH 公钥用 -ssh 方式连接。

gh 命令没有权限访问仓库怎么办?

先 gh auth login 登录并授权,仓库为私有时确保 token 有 repo 权限,组织内还需 organization 权限。

Long-tail SEO

你可能正在搜索这些报错

下面这些错误原文、场景词和中英文搜索词,都是排查同类问题时常见的入口。

  • CI/CD 排障命令
  • jenkins-cli 使用
  • gitlab-runner verify
  • gh run view 失败日志
  • gh cache list 缓存
  • docker buildx 排障
  • jenkins 队列查看命令
  • gitlab runner 状态查看