GitLab CI/CD脚本异常:address_list变量始终为空
解决GitLab CI中address_list为空的问题
排查方向与解决步骤
1. 捕获Python脚本的所有输出
如果create_address.py把内容输出到了标准错误(stderr),$()只会捕获标准输出(stdout),导致变量为空。修改命令同时捕获stderr:
address_list=$(python3 create_address.py "london" 2>&1)
同时在CI中直接执行脚本,查看是否有报错:
python3 create_address.py "london" echo "脚本返回码: $?"
2. 确认CI工作目录与文件路径
本地运行的工作目录和GitLab Runner环境可能不一致,先打印当前目录并检查文件是否存在:
pwd ls -la address/
若路径不符,改用项目根目录的绝对路径(GitLab CI提供CI_PROJECT_DIR变量):
cd "${CI_PROJECT_DIR}/address"
3. 校验Python环境与依赖
CI Runner的Python版本、依赖包可能和本地不一致,先检查版本并安装依赖:
python3 --version # 若脚本有依赖,执行安装 pip3 install -r address/requirements.txt
4. 确保脚本有执行权限
如果create_address.py缺少执行权限,会导致无法正常运行,添加权限设置:
chmod +x address/create_address.py
5. 修正CI脚本的语法格式
GitLab CI中>符号会折叠换行,可能导致脚本执行异常,改用多行拆分写法:
script: - cd address - echo 'STARTING generate address' - address_list=$(python3 create_address.py "london" 2>&1) - echo 'END generate address SUITE ' - echo "address_list $address_list"
内容的提问来源于stack exchange,提问作者joe
相关产品推荐
相关产品推荐

