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

GitLab CI/CD中$HOME与其他变量拼接时为空的问题排查

问题原因与解决方案

问题根源

你在.gitlab-ci.yaml的variables块中定义MY_TEST_DIR: "$HOME/mytests"时,$HOME并没有被正确解析为shell环境变量。这是因为GitLab CI的variables块是在Runner启动shell环境之前就完成变量解析的,此时$HOME这个shell级别的环境变量还未被加载,GitLab会将未识别的$HOME视为空值,最终导致MY_TEST_DIR变成了/mytests,自然找不到对应的目录。

修复方案

有两种简单的修复方式:

方式一:在shell环境中定义变量

将MY_TEST_DIR的定义移到before_script或script块中,让shell来解析$HOME:

stages:
  - prepare
  - run-test

prepare-scripts:
  stage: prepare
  before_script:
    - export MY_TEST_DIR="$HOME/mytests"  # 在shell环境中定义变量
    - cd $HOME
    - pwd
  script:
    - echo "Your test directory is $MY_TEST_DIR"
    - cd $MY_TEST_DIR
    - pwd
  when: always
  tags:
    - ubuntutest

方式二:直接在命令中使用$HOME/mytests

如果不需要复用变量,也可以直接在script的命令里直接写路径,绕开变量预解析的问题:

stages:
  - prepare
  - run-test

prepare-scripts:
  stage: prepare
  before_script:
    - cd $HOME
    - pwd
  script:
    - echo "Your test directory is $HOME/mytests"
    - cd $HOME/mytests
    - pwd
  when: always
  tags:
    - ubuntutest

这两种方式都能让$HOME在shell环境中被正确解析为/home/gitlab-runner,从而定位到存在的/home/gitlab-runner/mytests目录。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 23:27:28