如何在GitLab CI的python镜像中运行多行Python代码
解决方法
你当前配置失效的核心原因是:直接在shell中执行python会启动交互式解释器,后续的代码行不会被识别为Python输入,只会被当做shell命令执行,必然报错。
推荐使用Here Document方式传递多行Python代码,无需单独存储脚本,所有逻辑直接集成在CI配置中,修改后直接运行流水线即可生效,符合你的需求。
修正后的CI配置示例
# 替换为你的作业名称 sast_data_count: stage: VerifyCode image: python:latest script: - ls -al # 确认semgrep-sast.json存在后执行Python代码 - | python << 'EOF' import json # 读取JSON文件 with open("semgrep-sast.json", "r", encoding="utf-8") as f: data = json.load(f) # 自定义统计逻辑示例:统计顶层对象数量 if isinstance(data, list): obj_count = len(data) print(f"JSON文件内共有 {obj_count} 个对象") elif isinstance(data, dict): obj_count = len(data) print(f"JSON文件内共有 {obj_count} 个顶层键值对") # 其他业务逻辑直接补充在此处即可 EOF
注意事项
- 包裹结束标记的
'EOF'必须加单引号,作用是阻止shell提前解析Python代码中的$、反引号等特殊字符,如果你需要把shell变量传入Python代码,再去掉单引号即可。 - 建议使用
with open语法读取文件,会自动处理文件句柄关闭,避免资源泄漏。 - 若运行时提示文件不存在,可在Python代码前加
find . -name "semgrep-sast.json"确认文件实际路径。
内容的提问来源于stack exchange,提问作者Eric
相关产品推荐
相关产品推荐

