You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GitLab CI Job执行成功却未运行全部script命令,如何执行多条docker命令?

解决方案

  • 在script段开头添加set -euo pipefail参数,强制脚本任意命令执行失败时直接终止Job并报错,避免异常被静默忽略。同时可在build和push命令之间添加镜像校验步骤,确认构建产物确实存在:
script:
  - set -euo pipefail
  - docker build --target=buildimage -t $DOCKER_REGISTRY/$DOCKER_REPO/$DOCKER_APP_FOLDER/build:$CI_COMMIT_BRANCH .
  # 校验镜像是否构建成功
  - docker images $DOCKER_REGISTRY/$DOCKER_REPO/$DOCKER_APP_FOLDER/build:$CI_COMMIT_BRANCH
  - docker push $DOCKER_REGISTRY/$DOCKER_REPO/$DOCKER_APP_FOLDER/build:$CI_COMMIT_BRANCH
  • 给docker build命令添加--progress=plain参数,关闭默认的交互式进度输出,确保构建过程持续打印日志,避免30分钟的长构建过程中长时间无日志输出,被GitLab Runner误判为命令执行完成直接跳过后续步骤。
  • 排查Docker-in-Docker(DinD)服务的资源限制:长构建场景下DinD容器内存不足被OOM Kill是常见诱因,若DinD被强制重启后外层执行脚本未捕获到异常,会直接判定build命令执行成功,跳过后续push操作。建议给DinD服务分配至少4GiB以上的运行内存,同时开启Docker层缓存减少整体构建时长。
  • 确认镜像仓库权限:检查你使用的$DOCKER_AUTH_USER账号对目标镜像仓库具备写入权限,可在push命令前再执行一次docker login验证凭证有效性,避免凭证过期或权限不足导致push静默失败。

内容的提问来源于stack exchange,提问作者Rafael

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.15 01:06:04