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

GitLab CI/CD如何进入运行容器获取交互式shell进行调试

GitLab CI/CD script段获取交互式shell的方法

在Docker环境中我们可以通过docker-compose exec containername /bin/bash拿到容器的交互式shell,但GitLab CI/CD的script段默认运行在非交互式的无TTY环境,没有用户输入通道,无法直接启动交互式shell等待操作。

可行的排查方案

方案1:使用GitLab内置调试终端(推荐)

GitLab 13.7及以上版本自带CI作业调试功能,可以直接提供官方的交互式终端入口:

  • 进入项目「设置」→「CI/CD」→「通用管道」,开启「启用调试作业」选项
  • 运行流水线时勾选「启用调试模式」,或者直接在作业配置中添加debug: true参数,配置示例如下:
build:
  stage: build
  debug: true
  script:
    - pwd; ls -al
  • 作业启动后,进入作业详情页的「终端」标签页,即可直接获取当前运行环境的交互式shell,执行任意命令排查问题。

方案2:挂起作业后手动接入容器(适用于私有Runner)

如果你使用的是自行托管的GitLab Runner,可以通过阻塞命令挂起作业后,从Runner宿主机直接接入运行中的容器:

  • 临时修改作业配置,添加sleep命令挂起作业,预留足够的排查时间:
build:
  stage: build
  script:
    - pwd; ls -al
    # 挂起作业30分钟,到期后自动恢复执行
    - sleep 1800
  • 登录到Runner所在的宿主机,执行docker ps找到当前正在运行的CI作业容器
  • 执行docker exec -it 容器ID /bin/bash即可进入容器获取交互式shell,排查完成后可以手动kill掉sleep进程让作业继续运行。

注意事项

  • GitLab官方公共共享Runner默认不支持调试终端功能,仅私有托管的Runner可正常使用
  • 调试专用的临时配置不要提交到主分支,避免正常流水线被阻塞浪费资源
  • 调试完成后请及时关闭调试作业开关,避免产生不必要的安全风险

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 17:36:05