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

如何在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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 05:24:05